路由(flask)
在Flask框架中,路由(route)是定义URL与执行函数之间关系的机制。路由是Flask应用的核心部分,帮助开发者创建不同的URL路径并将这些路径映射到特定的视图函数上。
基本用法
-
定义路由:使用Flask的
@app.route
装饰器来定义一个路由。这个装饰器将URL路径映射到一个视图函数。from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Hello, World!'
以上代码定义了根路径
/
,当用户访问该路径时,会调用home
函数并返回Hello, World!
。 -
动态路由:可以在URL中使用变量部分,这些变量会传递给视图函数作为参数。
@app.route('/user/<username>') def show_user_profile(username): return f'User {username}'
访问
/user/john
时,会调用show_user_profile
函数并传入username='john'
。 -
变量类型:可以为URL中的变量指定类型,如
int
、float
等。@app.route('/post/<int:post_id>') def show_post(post_id): return f'Post {post_id}'
访问
/post/123
时,会调用show_post
函数并传入post_id=123
。
HTTP 方法
默认情况下,路由响应GET请求。可以通过methods
参数指定视图函数可以处理的HTTP方法。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return 'Do the login'
else:
return 'Show the login form'
路由的高级用法
使用路由函数:可以使用app.add_url_rule
来为路由添加规则。
app.add_url_rule(rule, endpoint=None, view_func=None, **options)
rule:字符串,定义 URL 规则。例如,`'/hello'` 表示当访问 `/hello` 路径时,调用相应的视图函数。
endpoint:字符串,指向此规则的端点名称。默认值为视图函数的名称。
view_func:视图函数,处理请求的函数。例如,`hello` 是定义的视图函数。
**options:可选参数,如 `methods`,指定允许的 HTTP 方法。
示例如下:
def hello():
return 'Hello, World!'
app.add_url_rule('/hello', 'hello', hello)
重定向和错误处理:可以使用Flask的redirect
和abort
函数来处理重定向和错误响应。
from flask import redirect, abort, url_for
@app.route('/redirect_example')
def redirect_example():
return redirect(url_for('home'))
@app.route('/error_example')
def error_example():
abort(404)
License:
CC BY 4.0