ミドルウェアを追加すると、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
ロードバランサエラーとは何ですか? –
__init__を適切にオーバーライドしないでください。 def __init __...... self.get_response = ... super(ExampleMiddleware、self).__ init __(* args、** kwargs)? –
@markwalker_それは単にエラーコード:504-loadbalancerと言います。私はサーバーログが何を言うのかを編集しました。 –