簡體   English   中英

“CSRF令牌丟失或不正確”

[英]“CSRF token missing or incorrect”

編輯解決 :我覺得這樣的白痴。 我最初創建了兩個單獨的視圖:一個用於輸入,一個用於輸出。 我已經在輸出視圖中處理了所有代碼,即使我重新安排我的url和模板只是重用輸入視圖... SORRY EVERYONE。 現在工作正常......


我在localhost上運行,當我提交表單時,我收到“CSRF令牌丟失”錯誤。 我已經閱讀了文檔和一些stackoverflows。 我已經解決了大多數常見問題:

  • 我的模板中有csrf令牌(加載時模板已經插入了這個: <input type="hidden" name="csrfmiddlewaretoken" value="">
  • 我正在使用render_to_response和render_to_response('_template_',{_data_:'_data_'},context_instance=RequestContext(request))
  • 我確實已將RequestContext導入到我的視圖中
  • 我的設置中有'django.middleware.csrf.CsrfViewMiddleware'

任何人都知道我可能會缺少什么?

這是我的表格:

<form action="" method="post">
            {% csrf_token %}
            <input type="text" name="q">
            <input type="submit" value = "Submit">
        </form>

這是我的觀點:

def view_workout(request):
    errors = []
    if request.method == 'POST':
        q = request.POST['q']
        if not request.POST.get('q', ''):
            errors.append('Please complete all required fields')
            return render_to_response('swimsets/view_workout.html',{
                'error': errors
            },context_instance=RequestContext(request))
        else:
            return render_to_response('swimsets/view_workout.html',{
                'query': q
            },context_instance=RequestContext(request))

    else:

        return render_to_response('swimsets/view_workout.html', {

    },context_instance=RequestContext(request))

這是我的設置:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

您可能缺少CsrfResponseMiddleware,基於相關問題的答案是否在Django 1.2中仍然需要{%csrf_token%} CSRF保護標記?

您還可能需要將csrf導入視圖中:

from django.core.context_processors import csrf

暫無
暫無

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

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