1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from user.models import MyUser, TokenUser from utils.functions import get_cookie_token
def index(request): # 返回随机值到cookie中 res = render('hello') # key表示设置的名称, value表示设置的值, max_age表示存活的时间 # expires表示datetime类型的日期,表示多久后过期 # 设置cookie值,并存储 res.set_cookie('token', '123123', 6000) # res.delete_cookie('token')
return res
def get_token(request): # COOKIES: 传递科化段中cookie内容 # GET:获取http GET请求中传递的参数 如: 127.0.0.1:80/xxx/?id=1 # POST:获取http POST请求中传递的参数 # FILES:获取页面中传递的图片文件 # path:获取当前请求的URL路径 # method: 获取请求方式 if request.method == 'GET': # 取出cookie值 token = request.COOKIES.get('token') # 做令牌是否有效的校验
return HttpResponse('获取令牌')
def login(request): if request.method == 'GET':
return render(request, 'login.html')
if request.method == 'POST': # 1.获取登录提交的用户名和密码 username = request.POST.get('username') password = request.POST.get('password')
# 2.查询数据库中的用户名和密码对应的对象 user = MyUser.objects.filter(username=username,password=password).first() if not user: msg = '账号或密码输入不正确,请重新登录' return render(request, 'login.html', {'msg': msg})
# 3.登录操作 # 给登录成功的用户一个标识符,存于cookie中 res = HttpResponseRedirect('/my_index/') token = get_cookie_token() res.set_cookie('token', token, 6000)
# 向token_user表中更新或创建数据 token_user = TokenUser.objects.filter(user=user).first() if token_user: token_user.token = token token_user.save() else:
TokenUser.objects.create(token=token, user=user)
# 4.登录成功跳转页面 return res
def my_index(request): if request.method == 'GET': # 登录之后才能访问到首页,没登录返回登录页面 # token = request.COOKIES.get('token') # if token == '123123': # return render(request, 'index.html') # else: # return HttpResponseRedirect('/login/')
token = request.COOKIES.get('token') # 判断token是否有效 token_user = TokenUser.objects.filter(token=token).first() if token_user: return render(request, 'index.html') else: return HttpResponseRedirect('/login/')
def register(request): if request.method == 'GET': # GET 访问http://127.0.0.1:8000/register/ return render(request, 'register.html')
if request.method == 'POST': # 1.先获取账号、密码、确认密码 username = request.POST.get('username') password = request.POST.get('password') password2 = request.POST.get('password2')
# 2.判断用户名是否已经被注册 user = MyUser.objects.filter(username=username).first() if user: msg = '该用户已注册' return render(request, 'register.html', {'msg': msg})
# 3.判断密码和确认密码是否相同 if username and password and password2: if password != password2: msg = '两次密码输入不一致,请重新输入' return render(request, 'register.html', {'msg': msg}) else: msg = '用户名或密码不能为空' return render(request, 'register.html', {'msg': msg})
# 4.如果用户不存在,且密码和确认密码相同,则实现注册,保存数据,跳转页面 MyUser.objects.create(username=username, password=password) # return render(request, 'login.html') return HttpResponseRedirect('/login/')
|