2012-12-25 56 views
2

我刚开始和Flask一起玩,所以很可能这是一个严肃的noobish问题。此应用正在Google App Engine SDK 1.7.4上运行。烧瓶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() 

但是,如果我扭转路线处理,去/你好/渲染,如果我去了/

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() 

更糟糕的是,去/你好/,例如/你好/约翰,导致错误500.

这是正常的行为和路线的顺序很重要吗?如果是这样,请同时指出相关文档,并在可能的情况下提供该订单为何如此重要的解释。

回答

7

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

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

谢谢!沙发上几乎掉下来,嘲笑这是多么愚蠢的错误。圣诞快乐/节日快乐! – Sologoub

+0

@Sologoub:谢谢,你也是! – Blender

+0

将在7分钟内接受并计数。 – Sologoub