2

私は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 が発生します。

これは正常な動作であり、ルートの順序は重要ですか? その場合は、関連するドキュメントを教えてください。また、可能であれば、この順序が重要である理由を説明してください。

4

1 に答える 1

7

同じ名前の 2 つの関数を作成しています ( hello)。2 番目の名前を変更します。

@app.route('/')
def index():
   return "Main page"
于 2012-12-25T04:17:11.507 に答える