我在Django中实现一个按钮来解决用户问题(我正在为一个现有的项目做贡献,遗憾的是还没有使用现有的Django auth模型)
我有一个观点(现有):
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>
当我尝试使用该按钮时,我得到了Forbidden:403。CSRF验证失败。请求中止。
思想?
答案 0 :(得分:0)
问题是您必须在RequestContext
视图中使用logout
而不是,但在视图中使用base.html
模板。
如果模板的上下文不包含csrf_token
,则{% csrf_token %}
模板标记不执行任何操作,而不是呈现隐藏的CSRF输入字段,这可能如下所示:
<input type="hidden" value="4cEL0P1bToqoOhZL3CLRUFqxIWHWcnnf" name="csrfmiddlewaretoken">
您可以使用RequestContext
或手动生成CSRF令牌,并将其添加到模板的上下文中(如Django CSRF documentation中所述)。