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
首页{{ request.session.user_name }}!欢迎回来
登录状态:{{ request.session.is_login }}
用户名称:{{ request.session.user_name }}
用户邮箱:{{ request.session.user_email }}