接着咱們來作一下登錄功能javascript
咱們首先在templates建立一個login.html,用來顯示登錄的頁面html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="/static/js/jquery-3.3.1.js"></script> <script> $(function (){ $("input[name='username']").blur(function () { //alert("") uname=$("input [name='username']").val() CSRF=$("input[name='csrfmiddlewaretoken']").val() $.ajax({ url:'/BlogUser/getUser', data:{'uname':uname,'csrfmiddlewaretoken':CSRF}, type:'POST', }); }); }); </script> </head> <body> <h1>歡迎登陸</h1> <form action="/BlogUser/login" method="post"> {% csrf_token %} 用戶名:<input type="text" name="username" value="{{ username }}"> <br> 密 碼:<input type="password" name="pwd"> <label style="color: red">{{ error1 }}</label><br> <input type="submit" value="登陸"> </form> </body> </html>
接着在views.py中建立登陸的函數login()java
def login(request): if request.method=='GET': return render(request,'login.html') else: username=request.POST.get('username') pwd=request.POST.get('pwd') blogUserSet=BlogUser.objects.filter(username=username,password=pwd) if len(blogUserSet)==1: return redirect(reverse('user:welcome',args=[blogUserSet.first().id])) else: return render(request,'login.html',{'error1':'密碼錯誤'})
在blog\urls.py中導入welcome,在BlogUser.vews.py中配置一下路徑jquery
登陸成功將用戶信息放入sessionajax
2.中間件(幫咱們啓用session)shell
3.設置存儲形式(儲存在設置數據庫中)數據庫
session只能儲存json也就是字典類型的數據
django session的設計原理:
a、若是用戶是第一次請求(就看客戶端ie是否保存了sessionId的cookie)
建立session model
生成一個key sessionId 隨機的一個字符串(uuid使id永遠也不會重複)
保存到你session_engine指定位置
保存到cookie中,在客戶的瀏覽器中
b、若是第二次以上的請求,客戶端ie都會自動提交cookie到django中,django中利用你配置 的SessionMiddleware中間件激活session利用cookie中的sessionID到session_engine指 定位置讀取session model,並設置到request的session屬性上
正是用爲這樣才能在view裏面經過request.session使用session能力django
session自己就是一個dict字段json
session在存數據時數據必須支持序列化json)瀏覽器
咱們首先須要把app的session在數據庫中建立一個表
使用shell命令 migrate sessions
一、再次啓動manage.py二、輸入 migrate sessions 命令
這時咱們會發現數據中建立了一個session的表用來儲存session 的建立時間和到期時間(默認時間爲兩週)
接着咱們修改views.py中的代碼讓用戶登陸成功以後把它保存在session中以便於之後任何函數均可以在session中獲取到信息
登陸成功後,咱們關閉瀏覽器 ,再次打開瀏覽器,在地址欄輸入http://127.0.0.1:8000/welcome會發現內容不變
cookie和session共同保存的,cookie是保存在瀏覽器裏,session保存在數據庫中
接下來咱們實現不登陸的話看不到welcome這個頁面,若是不登陸,直接訪問welcome頁面時就會自動跳轉到登陸頁面,而且登陸成功以後能夠實現退出功能(使session失效)而且退出後又回到登陸頁面
咱們須要在views.py中添加退出函數
而且修改一下welcome.html,在裏面作一個判斷
同時在BlogUser\urls.py下配置一下路徑
接着咱們運行程序來到登陸頁面 登陸數據庫已有的數據
咱們點擊退出,又會回到登陸頁面