相对于Django的URL路由设置来说,Flask配置的方式有较多的不同。
下面来根据几个示例,来看看有什么地方不同。
示例如下:
- app.url_map 查看所有路由
- 使用methods设置视图GET、POST请求的方式
- 同一路由装饰多个视图函数
- 同一视图多个路由装饰器
- 使用 url_for 进行url反向解析
app.url_map 查看所有路由
Flask的路由可以通过视图函数的修饰器@app.route()
来配置访问url。
在Django中可以在urls.py
中查看所有视图的url信息,那么Flask如何查看所有视图url的信息呢?
可以看到日志中打印出了url的信息。
使用methods设置视图GET、POST请求的方式
在Flask的视图配置了url之后,默认是只支持GET请求的。如果需要处理POST请求,则需要使用methods参数设置一下。
在浏览器访问: http://127.0.0.1:5000/post_only
可以看到不允许GET请求。那么下面来给这个视图再设置允许GET请求。
再次访问 http://127.0.0.1:5000/post_only
可以看到GET请求能否正常访问了。
同一路由装饰多个视图函数
在同一个url路由的请求下,可以会有GET\POST\DELETE\PUT等多个不同的业务处理。
那么就需要使用不同的视图函数来区分处理。
- 测试访问GET请求http://127.0.0.1:5000/hello
- 测试访问POST请求http://127.0.0.1:5000/hello
从结果来看,同一个url下,根据配置不同的method,则可以设置到不同的视图函数进行业务处理。
同一视图多个路由装饰器
一个视图如何定义多个url进行访问?
在Django中只要在urls.py
中设置多行url定义即可,而在Flask中只需要使用多个路由修饰器进行定义。
- 访问第一个url地址http://127.0.0.1:5000/diff_url1
- 访问第二个url地址http://127.0.0.1:5000/diff_url2
使用 url_for 进行反解析
类似于Django在设置转发url的时候不会直接去写死路径,而是使用url设置的name值来进行url反向解析。
在Flask中则可以使用url_for
来进行反向解析,而Flask的视图函数不需要设置name,而是直接使用视图函数的函数名即可。
测试访问 http://127.0.0.1:5000/url_for_test
可以看到页面自动跳转至 hello_get
的视图函数中。