• Django登录逻辑,中间用到Cookie创建、读取、删除、等操作


     1 #-*- coding utf-8 -*-
     2 from django.shortcuts import render,render_to_response
     3 from django.http import HttpResponse,HttpResponseRedirect
     4 from django.template import RequestContext
     5 from django import forms
     6 from models import User
     7 
     8 #表单
     9 class UserForm(forms.Form): 
    10     username = forms.CharField(label='用户名',max_length=100)
    11     password = forms.CharField(label='密码',widget=forms.PasswordInput())
    12 
    13 
    14 #注册
    15 def regist(req):
    16     if req.method == 'POST':
    17         uf = UserForm(req.POST)
    18         if uf.is_valid():
    19             #获得表单数据
    20             username = uf.cleaned_data['username']
    21             password = uf.cleaned_data['password']
    22             #添加到数据库
    23             User.objects.create(username= username,password=password)
    24             return HttpResponse('regist success!!')
    25     else:
    26         uf = UserForm()
    27     return render_to_response('regist.html',{'uf':uf}, context_instance=RequestContext(req))
    28 
    29 #登陆
    30 def login(req):
    31     if req.method == 'POST':
    32         uf = UserForm(req.POST)
    33         if uf.is_valid():
    34             #获取表单用户密码
    35             username = uf.cleaned_data['username']
    36             password = uf.cleaned_data['password']
    37             #获取的表单数据与数据库进行比较
    38             user = User.objects.filter(username__exact = username,password__exact = password)
    39             if user:
    40                 #比较成功,跳转index
    41                 response = HttpResponseRedirect('/online/index/')
    42                 #将username写入浏览器cookie,失效时间为3600
    43                 response.set_cookie('username',username,3600)
    44                 return response
    45             else:
    46                 #比较失败,还在login
    47                 return HttpResponseRedirect('/online/login/')
    48     else:
    49         uf = UserForm()
    50     return render_to_response('login.html',{'uf':uf},context_instance=RequestContext(req))
    51 
    52 #登陆成功
    53 def index(req):
    54     username = req.COOKIES.get('username','')
    55     return render_to_response('index.html' ,{'username':username})
    56 
    57 #退出
    58 def logout(req):
    59     response = HttpResponse('logout !!')
    60     #清理cookie里保存username
    61     response.delete_cookie('username')
    62     return response
    63 复制代码
  • 相关阅读:
    JQ库函数记忆要点
    PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。
    ThinkPHP函数详解:F方法(快速缓存方法)
    AndroidStudio项目提交(更新)到github最详细步骤
    git项目管理及fatal: remote origin already exists.解决方法
    git项目管理及fatal: remote origin already exists.解决方法
    git分支(存在意义和使用方法)
    RecyclerView
    Git Windows版本
    chmod 777 -R on existing path getting chmod: -R: No such ...
  • 原文地址:https://www.cnblogs.com/ixiaosong/p/6956742.html
Copyright © 2020-2023  润新知