1. 程式人生 > >跨過Django的坑

跨過Django的坑

小寫 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的坑