跨過Django的坑

在最近的Django的學習中,慢慢的開始踩坑,開此欄,專爲收納Django的坑,在之後的學習中以便警示。(使用工具爲pycharm專業版2018.2.4,python3.5.2,Django版本2.1.3)html

 

一、關於提取表單的數據。前端

在前端經過表單提交數據,請求爲post的請求,method="post",這裏的post不用區分大小寫:python

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,代碼爲:django

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,頁面會返回錯誤信息以下:安全

 

 

二、關於CSRF(跨站請求僞造)驗證失敗服務器

在一開始的測試中,每次訪問服務器,網頁提示CSRF驗證失敗,請求終止。這個CSRF是Django的一種安全機制,能夠必定程度的防止其餘網站僞造入侵。工具

具體錯誤以下:post

這些提示並無看懂什麼意思,但也按照提到的某些關鍵詞在django中設置過,好比把DEBUG=True該爲DEBUG=False等等,最終都沒成功。學習

最後是把關於那個CSRF驗證的機制的代碼給註釋掉就解決這個問題,以下:測試

那樣註釋掉是一種逃避的方式,最好不要採起,還有一種就是在html頁面表單旁加 {% csrf_token %}就能夠解決。

相關文章
相關標籤/搜索