一、应用场景
- 实现需求:
- 假设在新增信息页面,完成新增操作后需要跳转到展示页面
- 展示页面是个动态页面,如果有参数,则展示相关参数的结果,如果没有参数则展示所有信息
- 解决方法:
- 使用url_for()生成url,再使用redirect()方法完成路径的重定向,实现当完成添加的逻辑后,跳转展示的逻辑
1.1、路由生成
url_for()函数的优点
- 比直接使用url的描述性更好
- 可以在一个地方改变url,可维护性好
- url_for()函数生成的url创建会处理特殊字符的转义和Unicode数据,比较直观
- url_for()函数生成的路径是绝对路径,可以避免使用相对路径导致的一些问题
- 如果应用是放在url根路径之外的位置(/myapplication),url_for()也可以妥善处理
url_for()的用法
- url_for()可以根据视图函数名,生成视图的路由地址
- 语法:
url_for(视图函数名,*)
- 视图地址:str类型,可以是函数名,也可以是由蓝图和视图函数组成的地址
- *:允许传递参数
- 用法:
- 用法一:
url_for(视图函数名)
- 用法二:
url_for(蓝图名.视图函数名)
- 用法一:
@app.route("/helloWord")
def hello():
return url_for("hello")
1.2、蓝图路由生成
route_login = Blueprint("login", __name__, url_prefix="/login")
route_index = Blueprint("index", __name__, url_prefix="/index")
@route_login.route("")
def login():
print("登录成功,进入首页")
return redirect(url_for("index.home"))
@route_index.route("")
def home():
print("欢迎来到首页")
return {"code": 0, "message": "success"}
1.3、路由跳转
重定向(Redirect)就是通过各种方法将各种网络请求重新转到其他位置
可以在生成视图的路由地址后,使用redirect()方法实现路由的跳转
redirect()使得一个路由地址A与另一个路由地址B联系起来,执行A时会跳转到B
- 语法:
flask.redirect(location, code=302, Response=None)
- location:是一个链接地址,可以使用url_for()函数得到,也可以是个静态文件地址
- code:HTTP协议响应状态码
- Response:是一个响应类
- 用法:
- 用法一:redirect(url地址)
- 用法二:redirect(路由地址),可以结合url_for()使用
app = flask.Flask(__name__)
route_login = Blueprint("login", __name__, url_prefix="/login")
route_index = Blueprint("index", __name__, url_prefix="/index")
@route_login.route("")
def login():
print("登录成功,进入首页")
return redirect(url_for("index.home"))
@route_index.route("")
def home():
print("欢迎来到首页")
return {"code": 0, "message": "success"}