2012-12-25 90 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