Django 三天免登陆

Django 三天免登陆流程

需求

访问 http://127.0.0.1:8000/student/login/点击记住密码,设置缓存保存三天,三天免登陆不点击记住密码,再次登录时需要手动输入密码#新创建项目 test31#新创建 app studentpython manage.py startapp student#配置 settings.pyINSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'student']# 配置urls test31/urls.pyurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^student/',include('student.urls'))]#配置子路由#coding=utf-8from django.conf.urls import urlimport viewsurlpatterns = [    url(r'^login/$',views.login_view)]#配置视图 views.py# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.http import HttpResponsefrom django.shortcuts import render, redirect# Create your views here.def login_view(request):    if request.method == 'GET':        #判断登录时是否有cookies        if request.COOKIES.has_key('loginUser'):            #获取用户名和密码            loginUser = request.COOKIES.get('loginUser','').split(',')            uname = loginUser[0]            pwd = loginUser[1]            #传递给前端页面渲染            return render(request,'login.html',{'uname':uname,'pwd':pwd})        else:            return render(request,'login.html')    else:        #获取请求参数        uname = request.POST.get('uname','')        pwd = request.POST.get('pwd','')        response = HttpResponse()        if uname == 'zhangsan' and pwd == '123':            #赋值响应内容            response.content = 'login success!'            # 是否记住密码;判断前端页面传过来的 flag 是否为1 ,为1 那么再次登录界面的时候成为 get 请求,将cookie 信息填入空白处            if request.POST.get('flag') == '1':                response.set_cookie('loginUser',uname ',' pwd,max_age=3*24*60*60,path='/student/')                return response            else:                #清空cookie 信息中的 loginUser                response.delete_cookie('loginUser',path='/student/')                return response        else:            # 重定向至重新登录页面            return redirect('/student/login')#配置 templates/login.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <form action="/student/login/" method="post">        {% csrf_token %}        <p>            <label for="sn">姓名:</label><input type="text" name="uname" id="sn" value="{{ uname }}"/>        </p>        <p>            <label for="pd">密码:</label><input type="password" name="pwd" id="pd" value="{{ pwd }}"/>        </p>        <p>            <input type="checkbox" name="flag" value="1" checked/>记住密码        </p>        <p>            <input type="submit" value="login"/>        </p>    </form></body></html>

效果: 未点击记住密码时没有 cookie:

再次访问http://127.0.0.1:8000/student/login/ 时候不会自动填充账号和密码,也没有cookie

效果: 点击登录时记住密码

再次访问http://127.0.0.1:8000/student/login/ 时候会自动填充账号和密码,并有cookie

来源:https://www.icode9.com/content-4-781201.html

(0)

相关推荐