Django简单用户登录 ---- 第3章

简单的例子:用户输入用户名和密码后登录系统,这里暂时不连接数据库。系统验证登录成功,直接跳转到百度的首页。登录失败,系统会将错误信息打印在页面上。

1. 登录模板

模板中需要写个简单的登录表单,如下面的:

<form action="/login/" method="POST" name="loginForm">
    <div class="form-group">
        <label for="name">用户名</label> <input type="text" class="form-control" name="username" placeholder="请输入用户名">
    </div>
    <div class="form-group">
        <label for="">密码</label> <input type="password" class="form-control" name="pwd" placeholder="请输入密码">
        <div style="color: red;font-weight: bold">{{ msg }}</div>
    </div>
    <button type="submit" class="btn btn-primary" onclick="return checkForm()">登录</button>
</form>

模板中的 {{ msg }}

2. 登录逻辑
from django.urls import path
from django.shortcuts import HttpResponse, render, redirect

def login(request):  #
    '''
    处理用户请求,返回相响应结果
    :param request:用户请求的相关信息(不是字节,是对象)
    :return:
    '''
    if request.method == 'GET':
        return render(request, 'login.html')  # 本质上是调用HttpResponse,自动找到login.html文件,读取内容并返回给用户
    else:
        # print(request.POST)  # 用户POST提交的数据(请求体)<QueryDict: {'name': ['thanlon'], 'pwd': ['123']}>
        # user = request.POST['username']#直接索引,如果没有username会报错
        username = request.POST.get('username')  # 如果没有username不会报错,返回None
        pwd = request.POST.get('pwd')  # 如果没有username不会报错,返回None
        if username == 'thanlon' and pwd == '123456':
            return redirect('https://www.blueflags.cn')
        else:
            return render(request, 'login.html', {'msg': '用户名或密码错误!'})  # django内部做模板渲染
            
urlpatterns = [
    # path('admin/', admin.site.urls),
    path('login/', login),
]
3. 结论

用户名和密码输入正确后,则登录成功跳转百度首页。否则,登录失败系统会将错误信息放到登录模板,然后传给用户。表现上是刷新表单界面,显示提示信息:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章