Ошибка CSRF при публикации файла в GAE с использованием Django-nonrel - PullRequest
0 голосов
/ 10 февраля 2012

У меня проблема при попытке опубликовать файл.

Работает нормально, когда я на dev сервере,

но в 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 добавляет скрытый ввод с именем "csrfmiddlewaretoken" с некоторым значением токена csrf на сервере dev, а также на GAE.

Однако, когда я пытаюсь загрузить файл, он выдает мне сообщение об ошибке csrf.

Я подозреваю, что кеширование вызывает эту проблему, поскольку оно началось вскоре после того, как я включил промежуточное программное обеспечение для кэширования.

Пока что я пытаюсь решить эту проблему, переупорядочив промежуточное программное обеспечение, но пока не получилось.

Кто-нибудь сталкивался с моей проблемой раньше?

1 Ответ

0 голосов
/ 11 февраля 2012

Включите тег {% csrf_token%} где-нибудь в вашей форме.

...