6-2 django在线教育平台----用户登录1

一、登录逻辑原理

1、HTTP 应用的信息是通过请求报文和响应报文传递的,其中请求报文由客户端发送,其中包含和许多的信息,而 django 将这些信息封装成了 HttpRequest 对象,该对象由 HttpRequest 类创建。每一个请求都会生成一个 HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。

简单说:请求url时,前端生成的信息传给了views里的函数参数request,在表单提交中,点击提交,前端的信息是通过input里的name传递到后台,然后取出request中的数据在后端进行逻辑处理

2、配置url

传给的只是句柄,加上括号表示调用这个函数,现在只是指向这个函数
这里写图片描述

3、简单搭建views逻辑

根据view里面的逻辑,交互方法如果是GET方法,返回登录页面login.html

这里写图片描述

4、配置前端模板

防止CSRF禁止,在form表单中加入{% csrf_token %},并配置好提交表单的url和交互方法,action=”/login/” method=”post”

这里写图片描述

添加csrf验证后,前端生成了hidden input
这里写图片描述

5、简单调试

打断点,调试,重启项目,点击登录,进入断点处,查看参数,F8执行完整个程序,跳转到登录界request是一个WSGIRequest对象,点击登录交互方法是GET方法

这里写图片描述

这里写图片描述

二、添加数据登录

点击登录页面立即登录按钮,数据通过input里的name传递到后台,存储在POST中

1、编写views逻辑,后端数据通过模板传递到request的POST中,取出POST中的数据进行验证

这里写图片描述

2、填写用户名和密码,点击提交,查看参数request,交互方法是POST方法,可以看到POST中的参数是以键值对的形式存储的,是QueryDict

这里写图片描述

3、模板配置

表单提交成功后,跳转到首页,首页的登录部分会显示为个人中心,需要在首页模板进行判断

这里写图片描述

判断:没有用户登录时,显示登录、注册按钮,登录成功后显示个人中心

这里写图片描述

这里写图片描述

users views.py

#  _*_ coding:utf-8 _*_
from django.shortcuts import render
from django.contrib.auth import authenticate, login

# Create your views here.


def login(request):
    if request.method == "POST":

        user_name = request.POST.get("username", "")  # 取出前端传过来的username
        pass_word = request.POST.get("password", "")  # 取出前端传过来的password
        user = authenticate(username=user_name, password=pass_word)      # 验证username,password是否正确
        if user is not None:                         # 如果验证不通过,返回None
            login(request, user)                     # 登录
            return render(request, "index.html")     # 暂时返回首页,首页登录部分变成个人中心
        else:
            return render(request, 'login.html', {})  # 登录不成功还是返回登录页

    elif request.method == "GET":
        return render(request, 'login.html', {})

猜你喜欢

转载自blog.csdn.net/f1ngf1ngy1ng/article/details/80913655
6-2
今日推荐