Flask URL路由注册



在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

最新更新