Jinja2和csrf令牌的问题

时间:2014-03-18 22:58:25

标签: django csrf jinja2

我继承了一个Django webapp,我需要添加一个基本的文件上传表单。该应用程序正在使用Jinja的模板引擎。我上传模板的第一次尝试有一个基本形式:

<form enctype="multipart/form-data" method="post">
{% csrf_token %}
<input type="file" name="datafile"></p>
<div><input type="submit" value="Upload"></div></form>

我已将'django.middleware.csrf.CsrfViewMiddleware'添加到我的MIDDLEWARE_CLASSES列表中,并且我在上传视图中使用了RequestContext。

如果我尝试访问我的上传页面,我会在应用的调试输出中收到此错误:

Encountered unknown tag 'csrf_token'. Jinja was looking for the following tags: 'endblock'. The innermost block that needs to be closed is 'block'.

在做了一些研究之后,我找到了帖子here,并将我的表单改为看起来像这样

<form enctype="multipart/form-data" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
<input type="file" name="datafile"></p>
<div><input type="submit" value="Upload"></div></form>

但是,这会让我回到403 Forbidden页面,我的调试输出中有一个CSRF token missing or incorrect

我需要做些什么才能让csrf令牌与jinja很好地合作?

0 个答案:

没有答案