78a24beeb19b939b9df1dbc368c778e0
Python-高级-Flask 路由

版权声明:本文为博主原创文章,遵循CC BY-NC-ND 4.0
版权协议,转载请附上原文出处链接和本声明。


路由

Flask URL的路由可以直接写在其要执行的函数上。

有人会质疑,这样不是把ModelController绑在一起了吗?的确,如果你想灵活的配置ModelController,这样是不方便,但是对于轻量级系统来说,灵活配置意义不大,反而写在一块更利于维护。

Flask路由规则都是基于Werkzeug的路由模块的,它还提供了很多强大的功能。

带参数的路由

让我们在上一篇Hello World的基础上,加上下面的函数。

@app.route('/hello/<name>')
def hello(name):
    return 'Hello %s' % name

完整的代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

@app.route('/hello')
def helloIndex():
    return 'Hello from Python Flask!'

@app.route('/hello/<name>')
def hello(name):
    return 'Hello %s' % name

if __name__ == "__main__":
    app.run()

运行程序。
当你在浏览器的地址栏中输入http://localhost:5000/hello/woman,你将在页面上看到”Hello woman”的字样。
URL路径中/hello/后面的参数被作为hello()函数的name参数传了进来。

你还可以在URL参数前添加转换器来转换参数类型,我们再来加个函数:

@app.route('/user/<int:user_id>')
def get_user(user_id):
    return 'User ID: %d' % user_id

完整的代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

@app.route('/hello')
def helloIndex():
    return 'Hello from Python Flask!'

@app.route('/hello/<name>')
def hello(name):
    return 'Hello %s' % name

@app.route('/user/<int:user_id>')
def get_user(user_id):
    return 'User ID: %d' % user_id

if __name__ == "__main__":
    app.run()

试下访问http://localhost:5000/user/man,你会看到404错误。
<code>404</code> 错误

404 错误

top Created with Sketch.