1 # csrf_token 標簽 2 # 作用: django 自帶的一個中間件,用在form標簽上,用戶校驗當前提交的數據是否是 指定頁面上提交的數據,跨站請求偽造保護的作用. 3 4 1,打開settings.py里面的csrftoken 功能(取消注釋) 5 2,視圖函數 6 def login(request): 7 if request.method == 'GET': 8 nk = ['a','b','c','d'] 9 return render(request,'login.html',{ 'a1':nk }) 10 else: 11 print(request.body) 12 return HttpResponse('POST 的請求方式') 13 3,模板文件 14 <form action="" method="post"> 15 {% csrf_token %} # 這里加上 {% csrf_token %} 這句代碼,表師啟用 csrf_token 16 <h3>用戶名: <input type="text" name="name"></h3> 17 <h3>密碼: <input type="password" name="password"></h3> 18 <input type="submit"> 19 </form> 20 21 # 請求流程: 22 # 客戶端: web段:http://127.0.0.1:8000/login 23 # 服務端: 發送給客戶端 一個login.html的頁面,經過中間件的時候,中間件會在這個頁面里加上一個隱藏的input標簽,里面時csrf的 name和value 24 # 客戶端: 收到了login.html的頁面,開始填寫表單,並點擊submit 提交form表單,這里表單里包含了 隱藏的csrf的input的標簽. 25 # 服務端: 收到客戶端的提交的數據包,會首先在中間件層進行csrf_token的校驗,看是否是本機生成的token,如果不是,直接403,如果是,繼續走視圖函數里定義的代碼.