簡體   English   中英

Django CSRF驗證失敗

[英]Django CSRF verification failure

我在實現Django中的將用戶注銷的按鈕時遇到問題(我正在為現有項目做貢獻,不幸的是,該項目尚未使用現有的Django身份驗證模型)

我有一個視圖(已存在):

def logout(request)
    request.session.flush()
    return render_to_response    ('tcore/logout.html',     
    context_instance=RequestContext(request))

和base.html中的一個按鈕

<form action = 'logout/' method = 'post'>
{%csrf_token%}
<input class ='formGo' type  = 'submit' value='logout' style = 'float:none:'>
</form>

當我嘗試使用該按鈕時,我被禁止了:403。CSRF驗證失敗。 請求中止。

有什么想法嗎?

問題是您必須不在 logout視圖中使用RequestContext ,而必須在呈現base.html模板的視圖中使用RequestContext

如果模板的上下文不包含csrf_token ,則{% csrf_token %}模板標記不執行任何操作,而是呈現隱藏的CSRF輸入字段,該字段看起來像這樣:

  <input type="hidden" value="4cEL0P1bToqoOhZL3CLRUFqxIWHWcnnf" name="csrfmiddlewaretoken">

您可以使用RequestContext或手動生成CSRF令牌並將其添加到模板的上下文中(如Django CSRF文檔中所述 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM