Django设计登录

一 流程图

二 编辑mysite/account/views.py

from django.shortcuts import render
from django.http import HttpResponse
# Django默认的用户认证和管理中的两个方法
from django.contrib.auth import authenticate, login
from .forms import LoginForm

# 用户登录视图函数
def user_login(request):
    # POST请求处理,里面绑定了数据
    if request.method == "POST":
        # 通过request.POST得到提交的表单数据,也是一个字典对象
        login_form = LoginForm(request.POST)
        # 验证传入的数据是否合法
        if login_form.is_valid():
            # 以健值对的形式记录了用户名和密码
            cd = login_form.cleaned_data
            # 验证用户名和密码
            user = authenticate(username=cd['username'], password=cd['password'])
            # 用户名和密码正确得到一个实例对象
            if user:
                # 用户登录操作,用户登录之后,Django会自动调用默认的session应用,将用户ID保存在session中,
                # 完成用户登录操作
                login(request,user)
                # 当网页返回字符串,用HttpResponse方法
                return HttpResponse("欢迎你,你已授权登录!")
            # 用户名和密码不对,得到空实例
            else:
                return HttpResponse("对不起,用户名和密码错误!")
        else:
            return HttpResponse("Invalid login")
    # GET请求处理,里面没有绑定数据
    if request.method == "GET":
        login_form = LoginForm()
        return render(request, "account/login.html", {"form":login_form})

三 登录模板设计

{% extends "base.html" %}
{% block title %}登录{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
    <h1>登录</h1>
    <p>请输入用户名和密码</p>
    <!--其中的action用于显示当前表单的提交地址,这里表示当前地址,即调用此模板的视图函数所对应的URL-->
    <form class="form-horizontal" action="." method="post">
        {% csrf_token %}
        <!--每个表单元素在一对P标签内-->
        <!--{{ form.as_p }}-->
        <!--使用Bootstrap样式使得表单更美丽-->
        <div class="form-group">
            <label for="{{ form.username.id_for_label }}" class="col-md-5 control-label" style="color:red"><span class="glyphicon glyphicon-user"></span>Username</label>
            <div class="col-md-6 text-left">{{ form.username }}</div>
        </div>
        <div class="form-group">
            <label for="{{ form.password.id_for_label }}" class="col-md-5 control-label" style="color:blue"><span class="glyphicon glyphicon-floppy-open"></span>Password</label>
            <div class="col-md-6 text-left">{{ form.password }}</div>
        </div>
        <input type="submit" value="Login">
    </form>
</div>
{% endblock %}

四 测试

1 浏览器输入:http://localhost:8000/account/login/

2 输入正确用户名和密码

欢迎你,你已授权登录!

3 输入错误用户名和密码

对不起,用户名和密码错误!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值