在Flask的路由注册功能http://flask.pocoo.org/docs/0.10/api/#url-route-registrations中,您可以做以下操作:
@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>')
您可以在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>')
也可以——它和你在问题中给出的第一个例子没有什么不同。
你所做的完全可以接受。下面是一个简单的例子:
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
。
Flask将愉快地返回:
5 47 something