流程
用户登录login页面,成功则设置session并将信息存到数据库中,返回index页面,index中可跳转home和退出登录但都需要校验。
数据库配置初始化
session存储使用到了数据库,可以使用自带的sqllte 也可以使用mysql(mysql配置请参考orm相关文章)。
python manage.py makemigrationspython manage.py migrate# 生成的数据库中会有一个 django_session表

视图逻辑配置
from django.shortcuts import render,HttpResponse,redirectfrom django.views import View# Create your views here.def login_session_auth(func):def inner(request,*args,**kwargs):is_login = request.session.get('session_login')if is_login == True:return func(request,*args,**kwargs)else:return redirect('login')return innerclass Loginview(View):def get(self,request):return render(request,'login.html')def post(self,request):user = request.POST.get('user')pwd = request.POST.get('pass')if user == 'guo' and pwd == 'guo':request.session['session_login'] = Truereturn render(request,'index.html')else:return render(request,'login.html')@login_session_authdef home(request):'''返回home页面'''return render(request, 'home.html')# session_login = request.session.get('session_login')# print(session_login,type(session_login))# if session_login == True:# return render(request, 'home.html')# else:# return redirect('login')@login_session_authdef logout(request):request.session.delete() # 删除session后 数据库中的记录也会被删除return redirect('login')
url配置
from django.contrib import adminfrom django.urls import pathfrom test01 import viewsurlpatterns = [path('admin/', admin.site.urls),path('login/',views.Loginview.as_view(),name='login'),path('home/', views.home, name='home'),path('logout/',views.logout,name='logout'),]
html配置
logout配置 (其他两个页面不变)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Index</title></head><body><h1> 这是首页!</h1><a href="/home/">home目录</a><h1><a href="/logout/">退出登录</a> </h1></body></html>
