2017-11-05 3 views
0

ミドルウェアを追加すると、TemplateResponseのページ上のフォームが動作を停止:submissionが数分間読み込まれ、ロードバランサエラーが発生します。Django Middleware破棄フォーム提出ですか?

form、メソッド、およびbotは、ミドルウェアがsettings.pyで定義されていない場合、すべて正常に表示されます。

コード:settings.pyで

:views.pyで

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'polls.views.ExampleMiddleware' 
] 

MIDDLEWARE_CLASSES = [ 
    'polls.views.ExampleMiddleware' 
] 

ミドルウェア定義:views.py

class ExampleMiddleware(MiddlewareMixin): 
    def __init__(self, get_response): 
     self.get_response = get_response 

    def __call__(self, request): 
     response = self.get_response(request) 
     return response 

    def process_template_response(self, request, response): 
     if 'right' in request.POST: 
      response.context_data['response'] = 'Sweet, thanks!' 
     elif 'wrong' in request.POST: 
      response.context_data['response'] = 'Awww, sorry' 
     return response 

関連するビュー:

def bot(request): 
    img_form = ImageUploadForm() 
    context = {'img_form':img_form} 
    if request.method=='POST': 
     img_form = ImageUploadForm(request.POST, request.FILES) 
     if img_form.is_valid(): 
      myfile = request.FILES['image'] 
      context = process_img(myfile) 
      return TemplateResponse(request, 'polls/bot.html',context) 
    return TemplateResponse(request, 'polls/bot.html',context) 

Detai ls:Python 3.5、Django 1.11、どこでもPython上でホスティング。

フォーム提出を壊していることは何ですか?どのように修正するのですか?

編集:ログは言う

2017年11月5日午後04時56分26秒日11月5日16時56分25秒2017断つ - (WORKER 2 ON *切腹をPID:15659、試してください:1 )*

2017-11-05 16:56:26 Sun Nov 5 16:56:25 2017 - HARAKIRI !!!作業員2 ステータス!!!

2017年11月5日午後04時56分26秒日11月5日午後四時56分25秒2017 - 切腹[コア0] 10.0.0.222 - POST/1509900084

2017年11月5日午後04時56分以降:26日11月5日16時56分25秒2017 - ハラキリ!!! 作業員2ステータスの終了

2017-11-05 16:56:26 DAMN!作業員2(PID:15659)が死亡し、復活を試みる 信号9 :(によって殺された...

2017年11月5日午後4時56分26秒再生成uWSGIワーカー2(新PID:20420)

2017あなたは「『django.contrib.messages.middleware.MessageMiddleware』」の後にコンマを入れるのを忘れて、あなたのsettings.pyを1として-11-05夜04時56分26秒はuWSGIワーカー2

+0

ロードバランサエラーとは何ですか? –

+0

__init__を適切にオーバーライドしないでください。 def __init __...... self.get_response = ... super(ExampleMiddleware、self).__ init __(* args、** kwargs)? –

+0

@markwalker_それは単にエラーコード:504-loadbalancerと言います。私はサーバーログが何を言うのかを編集しました。 –

答えて

0

のための2つのオフロードスレッドを生み出した。

MIDDLEWARE = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'polls.views.ExampleMiddleware' 
] 
+0

良いキャッチだけど、私の最後にはちょっとタイプミス - 問題には関係ない –

関連する問題