我尝试发布文件时遇到问题。
当我在开发服务器上时,它工作正常,
但是在GAE上,我只能发布文字,而不是文件。
以下是我正在使用的表格:
<form id="file" method="post" enctype="multipart/form-data" encoding="multipart/form-data" action="{{ upload_url }}">
{% for field in upload_form %}
<div class="field">
{{ field.label_tag }}
<div class="input">
{{ field }} {{ field.help_text }}
</div>
{% if field.errors %}
<ul class="errors">
{% for error in field.errors %}
<li>{{ error|escape }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endfor %}
<input class="submit" type="submit" value="Upload"/>
</form>
我相信我已经包含了适当的中间件
# Media middleware has to come first
'mediagenerator.middleware.MediaMiddleware',
# This loads the index definitions, so it has to come first
'autoload.middleware.AutoloadMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',# the "update" middleware must be first
'django.contrib.sessions.middleware.SessionMiddleware', # Session middleware needs to come before Auth middleware, because authentication is handled with sessions.
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.csrf.middleware.CsrfViewMiddleware',# It should come before any view middleware that assume that CSRF attacks have been dealt with.
'django.middleware.csrf.CsrfResponseMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',# the "fetch" middleware must be last
'google.appengine.ext.appstats.recording.AppStatsDjangoMiddleware',
我看到django在开发服务器和GAE上添加了一个名为“csrfmiddlewaretoken”的隐藏输入,其中包含一些csrf标记值。
但是,每当我尝试上传文件时,它都会向我提供csrf错误消息。
我怀疑缓存导致了这个问题,因为它在我加入缓存中间件后很快就开始了。
现在我试图通过重新排序我的中间件来解决这个问题,但到目前为止还没有运气。
以前有人遇到过我的问题吗?
答案 0 :(得分:0)
在表单的某处包含标记{%csrf_token%}。