首页 > 其他分享 >Django4全栈进阶之路18 项目实战:登录模块设计

Django4全栈进阶之路18 项目实战:登录模块设计

时间:2023-04-26 13:47:11浏览次数:35  
标签:username 进阶 Django4 18 request login password border message

1、编写函数视图,判定用户名密码,验证通过进入home主页,不通过返回登录页面

def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username)
        print(password)
        user = authenticate(request, username=username, password=password)
        if user is not None:
            print(user)
            login(request, user)
            return redirect('home')
        else:
            error_message = 'Invalid username or password'
            return render(request, 'login.html', {'error_message': error_message})
    else:
        return render(request, 'login.html')

2、创建路由

from django.urls import path

from . import views

urlpatterns = [
    path('login/', views.login_view, name='login'),
]

3、前端模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login Window</title>
    <!-- 引入 Bootstrap 和 jQuery -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.2/css/bootstrap.min.css">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.2/js/bootstrap.min.js"></script>
    <style>
        /* 将登录窗口置于页面中心位置 */
        .login-wrapper {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }

        /* 登录窗口样式 */
        .login {
            width: 300px;
            padding: 20px;
            border: 1px solid #ccc;
            border-radius: 5px;
        }

        .form-group {
            margin-bottom: 10px;
        }

        label {
            display: block;
            margin-bottom: 5px;
        }

        input[type="text"],
        input[type="password"] {
            width: 100%;
            padding: 5px;
            border: 1px solid #ccc;
            border-radius: 3px;
        }

        button {
            display: block;
            width: 100%;
            padding: 5px;
            margin-top: 10px;
            background-color: #007bff;
            color: #fff;
            border: none;
            border-radius: 3px;
            cursor: pointer;
        }

        button:hover {
            background-color: #0069d9;
        }
    </style>
</head>
<body>
<div class="login-wrapper">
    <div class="login">
        <h2>登录</h2>
        <hr>
        {% if error_message %}
            <div class="alert alert-danger">{{ error_message }}</div>
        {% endif %}
        <form method="post" action="{% url 'login' %}">
            {% csrf_token %}
            <div class="form-group">
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" placeholder="Enter your username">
            </div>
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" id="password" name="password" placeholder="Enter your password">
            </div>
            <button type="submit">确认</button>
        </form>
    </div>
</div>
</body>
</html>

 

标签:username,进阶,Django4,18,request,login,password,border,message
From: https://www.cnblogs.com/beichengshiqiao/p/17355637.html

相关文章

  • [LeetCode] 2418. Sort the People
    Youaregivenanarrayofstrings names,andanarray heights thatconsistsof distinct positiveintegers.Botharraysareoflength n.Foreachindex i, names[i] and heights[i] denotethenameandheightofthe ith person.Return names sorted......
  • 算法学习day07哈希表part02-454、383、15、18
    packageLeetCode.hashpart02;importjava.util.HashMap;importjava.util.Map;/***454.四数相加II*给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:*0<=i,j,k,l<n*nums1[i]+nums2[j]+nums......
  • CF1822G2 - Magic Triples
    比较好的题目,别的不说,G1对G2有着不错的启发性。首先,因为\(b>0,a_k\le10^9\),所以\(b\)不可能超过\(\sqrt{a}\)考虑对\(b\)分类讨论,设置一个阈值\(B\),先处理\(b=1\)的情况,其实就是取三个相同的数然后排列,可以比较简单的排序之后做到\(O(n)\)。接着手写一个哈希表用......
  • mac使用Stable Diffussion进阶篇
    1、出图大法魔咒百科词典 (Bybilibili波西BrackRat)2、样例使用文字描述第一区►Prompt第一行(masterpiece:1.0),(bestquality:1.0),(ultrahighres:1.0),(8kresolution:1.0),(realistic:1.0),(ultradetailed1:0),(sharpfocus1:0),(RAWphoto:1.0)第二行1girl,......
  • GB/T28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“规范解读和技术实现
    规范解读GB/T28181-2022和GB/T28181-2016规范,有这么一条“更改了附录D基于TCP协议的视音频媒体传输要求(见附录D,2016年版的附录L)。”。本文主要是针对GB/T28181-2022里面提到的“基于TCP协议的视音频媒体传输要求”做相应的接口适配,在此之前,我们先回顾下规范里面针对这部分......
  • 编译部署LNMP-php8.1.18版本
    由于mysql编译会非常耗费资源,故咱们这里不做介绍,只介绍nginx的编译、php的编译以及nginx和php的联动,至于mysql如何接入,需要看具体业务,在LNMP中mysql是相对独立的,不需要特别的配置编译安装nginx新建www用户groupaddwwwuseradd-s/sbin/nologin-gwwwwww安装必要依赖yum......
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement befo
    场景安装后首次运行mysql命令报错误:ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement修改密码mysql>alteruseruser() identifiedby‘admin@123456’;QueryOK,0rowsaffected(0.03sec)mysql>flushp......
  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案
    Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)常用的两款AI可视化交互应用比较:GradioGradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,想......
  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案
    Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)常用的两款AI可视化交互应用比较:GradioGradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,......
  • CodeStar2023年春第6周周赛普及进阶组
    T1:最长倍数序列本题难度中等,先把\(a\)从小到大排序。dp[i]表示以\(a_i\)结尾的倍数序列。转移如下:只有\(a_i\),对应长度\(dp[i]=1\)上一个数是\(a_j(1\leqslantj\leqslanti-1)\),若\(a_j\)是\(a_i\)的约数,就更新\(dp[i]=\max(dp[i],dp[j]+1)\)最终答......