烧瓶路线订购事宜?

时间:2012-12-25 04:13:26

标签: python google-app-engine flask jinja2 werkzeug

我刚刚开始玩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 / renders,就好像我去了/

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.

这种正常行为和路线的顺序是否重要?如果是,请同时向我指出相关文档,并在可能的情况下,解释为什么此订单如此重要。

1 个答案:

答案 0 :(得分:7)

您正在创建两个具有相同名称的函数(hello)。重命名第二个:

@app.route('/')
def index():
   return "Main page"