GET表单方法的CSRF验证错误

时间:2015-10-03 08:35:17

标签: python django django-forms django-csrf

我在尝试提交表单时收到错误CSRF verification failed. Request aborted.。我使用了GET方法,但是我收到了错误。我还添加了{%csrf_token%}令牌,但确实存在错误,但错误仍然存​​在。

示例HTML:

<body>
    <form action="/entry/" method="get" name="Form1"><br>
        {% csrf_token %}
        <select name="Date" size="1">
            <option>30</option>
        </select>
        &nbsp;
        <select name="Month">
            <option>09</option>
        </select>
        <select name="Year">
            <option>2015</option>
        </select>
        <input id="Save" style="height: 50px; width: 100px;" type="submit" value="Save"></form>
</body>

views.py文件

def getuser(request):
    return render(request, 'index.html')

def putrecord(request):
    date = request.GET['Date']
    print date
    month = request.GET['Month']
    year = request.GET['Year']
    time_stamp = date + '/' + month + '/' + year
    print time_stamp
    return render(request, 'index.html', {})

urls.py

urlpatterns = patterns('',

    url(r'^expenseapp/', getuser),
    url(r'^entry/', putrecord),
)

我的设置文件中也有CsrfViewMiddleware。我怎样才能摆脱这个错误?

2 个答案:

答案 0 :(得分:1)

尝试从浏览器中删除cookie,CSRF使用cookie来存储令牌。

答案 1 :(得分:0)

通过GET提交的表单不需要CSRF令牌模板标记。只需从表单中删除令牌即可让它到达您的视图处理程序方法。

类似的问题和答案:Django: POST form requires CSRF? GET doesn't?