流程

用户登录login页面,成功则设置session并将信息存到数据库中,返回index页面,index中可跳转home和退出登录但都需要校验。

数据库配置初始化

session存储使用到了数据库,可以使用自带的sqllte 也可以使用mysql(mysql配置请参考orm相关文章)。

  1. python manage.py makemigrations
  2. python manage.py migrate
  3. # 生成的数据库中会有一个 django_session表

image.png

视图逻辑配置

  1. from django.shortcuts import render,HttpResponse,redirect
  2. from django.views import View
  3. # Create your views here.
  4. def login_session_auth(func):
  5. def inner(request,*args,**kwargs):
  6. is_login = request.session.get('session_login')
  7. if is_login == True:
  8. return func(request,*args,**kwargs)
  9. else:
  10. return redirect('login')
  11. return inner
  12. class Loginview(View):
  13. def get(self,request):
  14. return render(request,'login.html')
  15. def post(self,request):
  16. user = request.POST.get('user')
  17. pwd = request.POST.get('pass')
  18. if user == 'guo' and pwd == 'guo':
  19. request.session['session_login'] = True
  20. return render(request,'index.html')
  21. else:
  22. return render(request,'login.html')
  23. @login_session_auth
  24. def home(request):
  25. '''
  26. 返回home页面
  27. '''
  28. return render(request, 'home.html')
  29. # session_login = request.session.get('session_login')
  30. # print(session_login,type(session_login))
  31. # if session_login == True:
  32. # return render(request, 'home.html')
  33. # else:
  34. # return redirect('login')
  35. @login_session_auth
  36. def logout(request):
  37. request.session.delete() # 删除session后 数据库中的记录也会被删除
  38. return redirect('login')

url配置

  1. from django.contrib import admin
  2. from django.urls import path
  3. from test01 import views
  4. urlpatterns = [
  5. path('admin/', admin.site.urls),
  6. path('login/',views.Loginview.as_view(),name='login'),
  7. path('home/', views.home, name='home'),
  8. path('logout/',views.logout,name='logout'),
  9. ]

html配置

logout配置 (其他两个页面不变)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Index</title>
  6. </head>
  7. <body>
  8. <h1> 这是首页!</h1>
  9. <a href="/home/">home目录</a>
  10. <h1><a href="/logout/">退出登录</a> </h1>
  11. </body>
  12. </html>