2015-08-13 93 views
0

在瓶的路線註冊功能,http://flask.pocoo.org/docs/0.10/api/#url-route-registrations,你可以做到以下幾點:瓶URL路由註冊記憶

@app.route('/users/page/<int:page>/line/<int:line>/word/<string:word>') 

所以,在上面的例子中,我們想要去一個特定的詞,在特定線路上一個特定的頁面。

基本上我的問題是,變量部分是否需要成爲URL的最後部分,或者你可以追加更多的位?

編輯: 我要說的是,我見過的所有示例到目前爲止看起來像這樣:

@app.route('/users/page/<int:page>') 

,但你可以這樣做:

@app.route('/users/page/<int:page>/sentence/<int:sentence>') 

回答

2

你可以向URL中添加查詢字符串參數,例如?search=blue,但不能添加另一個「文件夾」,例如.../<string:word>/character,因爲路由與路由映射中的條目不匹配。

但是,如果你只是想定義路由,並沒有最後一部分是可變的,這是沒有問題 - 例如

@app.route('/users/page/<int:page>/line/<int:line>/word/<string:word>/test')

編輯:

@app.route('/users/page/<int:page>/sentence/<int:sentence>') 

也將是很好 - 這與你在問題中給出的第一個例子沒有什麼不同。

+0

感謝馬特。在深入研究這個之前,我仍然試圖確定Flask是否是爲我想做的事情而構建的。如果你不介意,你能證實嗎?例如,用戶訪問URL(例如http:// localhost:8080/test/sensor/sensor1),然後Flask必須在數據庫中查詢'sensor1',然後將數據作爲CSV文件返回以供用戶下載。 Flask要走這條路嗎?請求也可以是http:// localhost:8080/test/sensor/sensor1/date/2001-01-01,因此我的上一個問題。謝謝! –

+0

燒瓶絕對可以做到這一點。您只需註冊兩條路線,一條是日期,一條是沒有的。並且CSV文件的輸出也不成問題,您只需使用'send_file'或類似命令生成響應。 –

+0

聽起來像一個計劃。謝謝馬特,你一直很有幫助。你是全職Flask開發人員嗎? –

1

你所做的是完全可以接受的。這裏有一個簡單的例子:

from flask import Flask 

app = Flask(__name__) 


@app.route('/users/page/<int:page>/line/<int:line>/word/<string:word>') 
def user_page(page, line, word): 
    return '{} {} {}'.format(page, line, word) 


if __name__=='__main__': 
    app.run(port=5000, debug=True) 

打開瀏覽器並導航到http://localhost:5000/users/page/5/line/47/word/something

和瓶會很樂意返回:

5 47 something