Django的session框架默认启用,并已经注册在app设置内。
如果没有开启手动添加这两行并执行
migrate命令创建数据表,就可以使用session了。
Django提供了一个通用的Session框架,并且可以使用多种session数据的保存方式:保存在数据库内,保存到缓存,保存到文件内,保存到cookie内。
编写views.py
from django.shortcuts import render,redirect from django.http import HttpResponse from . import models def index(request): if not request.session.get('is_login',None): return redirect('/login/') # return HttpResponse('Hello, world. You\'re at the polls index.') return render(request,'index.html') def login(request): if request.session.get('is_login',None): return redirect('/') if request.method == "POST": user = request.POST.get('username') password = request.POST.get('password') message='请检查填写内容!' print('------user:%s,password:%s------'%(user,password)) if user.strip() and password: try: u=models.User.objects.get(user=user) #a=models.table_name.objects.get(xx=xx,yy=yy) #返回一个数据对象.获取数据对象的某一个属性字段值通过点的方式获取如: print('---数据库用户:%s,密码:%s,注册日期:%s'%(u.user,u.passwd,u.c_time)) except Exception as f: print(f) message = '用户不存在!' return render(request,'login/login.html',{'message':message}) if u.passwd == password: request.session['is_login'] = True request.session['user_id'] = u.id request.session['user_name'] = u.user request.session['user_email'] = u.email return redirect('/') else: message = '密码不正确' return render(request,'login/login.html',{'message':message}) return render(request,'login/login.html',{'message':message}) return render(request,'login/login.html') #通过下面的if语句,我们不允许重复登录: # if request.session.get('is_login',None): # return redirect("/") #session中添加数据 # request.session['is_login'] = True # request.session['user_id'] = user.id # request.session['user_name'] = user.name def register(request): return render(request,'login/register.html') def logout(request): if not request.session.get('is_login',None): return redirect('/login/') request.session.flush() return redirect("/login/")
cat index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1>{{ request.session.user_name }}!欢迎回来</h1> <a>登录状态:{{ request.session.is_login }}</a><br> <a>用户名称:{{ request.session.user_name }}</a><br> <a>用户邮箱:{{ request.session.user_email }}</a><br> <p> <a href="/logout/">登出</a> </p> </body> </html>