我继承了一个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很好地合作?