Flaskの学習を始め、チュートリアルを参照して小さなテストコードを実行しました。ここFlaskで出力を表示しているときに内部サーバーエラー500を取得しています
コードは次のとおり
Hello.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def student():
return render_template('student.html')
@app.route('/result',methods = ['POST', 'GET'])
def result():
if request.method == 'POST':
result = request.form
return render_template("result.html",result = result)
if __name__ == '__main__':
app.run()
student.html
<html>
<body>
<form action = "http://localhost:5000/result" method = "POST">
<p>Name <input type = "text" name = "Name" /></p>
<p>Physics <input type = "text" name = "Physics" /></p>
<p>Chemistry <input type = "text" name = "chemistry" /></p>
<p>Maths <input type ="text" name = "Mathematics" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
result.html
<!doctype html>
<html>
<body>
<table border = 1>
{% for key, value in result.iteritems() %}
<tr>
<th> {{ key }} </th>
<td> {{ value }} </td>
</tr>
{% endfor %}
</table>
</body>
</html>
student.html
とresult.html
をtemplates
フォルダに保存しました。 Hello.py
を実行すると、student.html
が実行され、フィールドに値を入力できるフォームが表示されます。
内部サーバーエラー サーバが内部エラーが発生したため、リクエストを完了できませんでした:result.html
ページが表示されます提出ではなく、それは次のエラーを与えるクリックします。サーバーに過負荷がかかっているか、アプリケーションにエラーがあります。
トレースバック:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [25/Jun/2017 20:48:15] "GET/HTTP/1.1" 200 -
[2017-06-25 20:48:24,634] ERROR in app: Exception on /result [POST]
Traceback (most recent call last):
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "<ipython-input-1-0b3c292b941b>", line 12, in result
return render_template("result.html",result = result)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\templating.py", line 134, in render_template
context, ctx.app)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\flask\templating.py", line 116, in _render
rv = template.render(context)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\jinja2\environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Kshitiz\Anaconda3\lib\site-packages\jinja2\_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "C:\Users\Kshitiz\Desktop\doc2vec\templates\result.html", line 6, in top-level template code
{% for key, value in result.iteritems() %}
jinja2.exceptions.UndefinedError: 'werkzeug.datastructures.ImmutableMultiDict object' has no attribute 'iteritems'
127.0.0.1 - - [25/Jun/2017 20:48:24] "POST /result HTTP/1.1" 500 -
あなたは私のコードが間違っているものを教えていただけますか?
トレースバックなしではありません。あなたが削除した投稿にはあなたが含まれていましたが、そこには 'TemplateNotFound'例外がありました。同じ例外がまだありますか?テンプレートファイルを正しい場所に移動して修正します。 –
私はその愚かさをどれほど愚かにしたのか気づきました。 result.htmlとstudent.htmlの両方をテンプレートフォルダに移動しましたが、例外はありませんでした。代わりにこれ。あるスクリプトは動作し、他のスクリプトは動作しません。 – Kshitiz
しかし、まだトレースバックを見る必要があります。 –