Django w / Apache,CSRF验证失败

时间:2017-07-24 20:48:53

标签: django apache csrf

我的Django应用程序中的CSRF验证存在一些问题。我的应用中有两个其他{% csrf_token %}标记,位于两个不同的HTML模板中。这些工作很好,而且总是有。当尝试在另一个新模板中添加第三个时,我会收到'403 Forbidden'页面。我已经完全复制了两个工作'post'命令的样式,但由于某种原因,这个命令不起作用。有什么建议吗?

'post'表单包含一个选择/下拉对象和一个提交按钮。单击该按钮应指向视图以处理发布的数据,再次像前两个一样写入,但它会引发403错误,导致失败的原因是“CSRF令牌丢失或不正确”。我也在运行Django 1.4.22,启用了用户身份验证。这是不工作的观点:

from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required

...Other Views...
@login_required
def Process(request, id):
    ...
    try:
        choice = request.POST['choice']
    except(KeyError, Item.DoesNotExist):
        return render_to_response('app/home.html', context_instance=RequestContext(request))
    else:
        ...Process posted data...

    return HttpResponseRedirect(reverse('app.views.display', args=()))

以下是工作视图:

#Same includes/imports as earlier, in same file
@login_required
def Submit(request, id, id_2, data):
    try:
        new_data = request.POST[data.name]
    except(KeyError, DataPoint.DoesNotExist):
        return render_to_response('app/home.html', context_instance=RequestContext(request))
    else:
        ...Process new data...
        return HttpResponseRedirect(reverse('app.views.Data_View', args=()))

这是HTML文件:

<!DOCTYPE html>
...
<table>
<tr><td>
<form action="/app/page/to/redirect/to/" method="post">
    {% csrf_token %}
    <select name="choice">
        <option name="yes" value="yes" selected>Yes</option>
        <option name="no" value="no">No</option>
    </select>
</form></td></tr>...</table>

0 个答案:

没有答案