私はFlaskを使い始めたばかりなので、おそらくこれは非常に初歩的な質問です。このアプリは Google App Engine SDK 1.7.4 で実行されています。Flask 0.9、Werkzeug 0.9、Jinja2 2.6。
次のコードは期待どおりに機能します。
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/')
def hello():
return "Main page"
@app.route('/hello/', methods=['GET', 'POST'])
@app.route('/hello/<name>', methods=['GET', 'POST'])
def hello(name=None):
return render_template('hello.html', name=name)
if __name__ == "__main__":
app.run()
ただし、ルート ハンドラーを逆にすると、/hello/ に移動すると、/ に移動したかのようにレンダリングされます。
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/hello/', methods=['GET', 'POST'])
@app.route('/hello/<name>', methods=['GET', 'POST'])
def hello(name=None):
return render_template('hello.html', name=name)
@app.route('/')
def hello():
return "Main page"
if __name__ == "__main__":
app.run()
さらに悪いことに、/hello/、たとえば /hello/John に移動すると、エラー 500 が発生します。
これは正常な動作であり、ルートの順序は重要ですか? その場合は、関連するドキュメントを教えてください。また、可能であれば、この順序が重要である理由を説明してください。