跨過Django的坑
阿新 • • 發佈:2018-11-10
小寫 pytho djang get 登錄 機制 關於 防止 user
在最近的Django的學習中,慢慢的開始踩坑,開此欄,專為收納Django的坑,在以後的學習中以便警示。(使用工具為pycharm專業版2018.2.4,python3.5.2,Django版本2.1.3)
1、關於提取表單的數據。
在前端通過表單提交數據,請求為post的請求,method="post",這裏的post經測試,不用區分大小寫:
1 <form action="index/" method="post"> #這裏不用區分大小寫 2 {#<form action={% url "chris" %} } method="POST">#} 3 <input type="text" name="username"> 4 <input type="password" name="pwd"> 5 <input type="submit" value="submit"> 6 </form>
關鍵部分是在views中提取數據,如獲取前端提交的username和pwd,代碼為:
def index(request): if request.method == ‘POST‘: #這裏POST一定要大寫! print("獲取到數據了。") username = request.POST.get("username") #這裏POST一定要大寫! pwd = request.POST.get("pwd") #這裏POST一定要大寫! if username == ‘chris‘ and pwd == ‘123‘: return HttpResponse(‘登錄成功!‘)
另外,在獲取數據時如果不是大寫POST,頁面會返回錯誤信息如下:
2、關於CSRF(跨站請求偽造)驗證失敗
在一開始的測試中,每次訪問服務器,網頁提示CSRF驗證失敗,請求終止。這個CSRF是Django的一種安全機制,可以一定程度的防止其他網站偽造入侵。
具體錯誤如下:
這些提示並沒有看懂什麽意思,但也按照提到的某些關鍵詞在django中設置過,比如把DEBUG=True該為DEBUG=False等等,最終都沒成功。
最後是把關於那個CSRF驗證的機制的代碼給註釋掉就解決這個問題,如下:
跨過Django的坑