亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 3:不確定為什么我會收到 CSRF 錯誤

Django 3:不確定為什么我會收到 CSRF 錯誤

當年話下 2022-11-01 15:05:52
我正在編寫一個 Django 應用程序,我的注冊頁面出現 403 錯誤:禁止 (403)CSRF 驗證失敗。請求中止。失敗原因:CSRF 令牌丟失或不正確。這是視圖:def register(request):    form = UserCreationForm(request.POST)    if form.is_valid():        form.save()        return redirect('login')    return render(request, "register.html", {'form' : form})這是相關模板中的表格:{% block content %}<form method="POST">    {% csrf_token %}    {% for field in form %}    <p>        {{ field.label_tag }}        {{ field }}    </p>    {% endfor %}    <button type="submit" class="button">Register</button></form>{% endblock %}一些相關事實:(1) 我網站上的其他頁面沒有拋出此錯誤,即使許多頁面需要 CSRF 令牌。(2) 我用于插入 CSRF 令牌的代碼在此模板中與其他模板中的相同(除非我的三重檢查失敗了)。(3) [可能相關?] 這是我直接導入 views.py 的唯一表單,無需先在 forms.py 中進行修改。因此,views.py 的兩行代碼是:from django.contrib.auth.forms import UserCreationForm[...]from foo.forms import FooForm, FooBarForm, UploadFooForm任何和所有的幫助表示贊賞。我已經嘗試了大部分我認為明顯的調試步驟(刪除 {% csrf_token %} 行,讀取調試輸出并確保 [我認為] 這些問題不適用于我等)。編輯:我在 Django 3 中工作。我看到了另一個問題并收到了關于 @csrf_exempt 裝飾器的回復,但我相信相關的裝飾器在 Django 3 中不再可用。
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

我提供的答案不能長期使用,但是為了忽略這個錯誤,我們可以使用 django 的內置裝飾器方法,只需導入 csrf_exempt 并將裝飾器添加到顯示錯誤的函數上方。


from django.views.decorators.csrf import csrf_exempt


@csrf_exempt

def register(request):

    form = UserCreationForm(request.POST)

    if form.is_valid():

        form.save()

        return redirect('login')

    return render(request, "register.html", {'form' : form})

希望它有所幫助,你學到了一些新的東西,快樂的編碼......


查看完整回答
反對 回復 2022-11-01
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

嘗試刪除遷移文件和 db 文件,然后 makemigrations 并再次遷移。



查看完整回答
反對 回復 2022-11-01
  • 2 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號