2012-02-10 11 views
0

ファイルを投稿しようとすると問題が発生します。Django-nonrelを使用してGAEにファイルを投稿する際のCSRFエラー

それは私がのdevのサーバー上にいる時、正常に動作します

が、GAE上で、私はテキストのみ、決してファイルを投稿することができます。私は適切なミドルウェア

# 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はいくつかのCSRFトークンと「csrfmiddlewaretoken」という隠し入力を追加して参照が含まれていると信じている

<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> 

:以下

は、私が使用していますフォームです値はdevサーバーとGAEでも同様です。

しかし、ファイルをアップロードしようとするたびに、私にcsrfエラーメッセージが表示されます。

キャッシングミドルウェアを含めた直後にこの問題が発生していると思われます。

今のところ私はミドルウェアを並べ替えることでこの問題を解決しようとしていますが、これまでのところ運がありません。

以前誰かが私の問題に直面しましたか?

答えて

0

フォームのどこかに{%csrf_token%}というタグを含めます。

+0

この場合は該当しません。 CsrfResponseMiddleware csrfトークンを自動的に追加します。 – taelimoh

関連する問題