当路由简单时,可直接在链接中编写路由
如后台:
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/user')
def user():
return 'zxy'
index.html页面中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/user">点击</a>
</body>
</html>
当点击连接时,会跳转到@app.route('/user')
进行处理,注意此时是跳转到路由下(也就是:http://127.0.0.1:5000/user),而不是跳转到@app.route('/user')
下的视图函数
对于包含可变部分的动态路由,在模板中构建正确的 URL 就很困难。而且,直接编写 URL 会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板中的链接可能会失效为了避免这些问题,Flask 提供了 url_for() 辅助函数。
url_for()函数
作用
- 给指定的函数构造 URL(根据视图函数名称得到当前所指向的url)
- 访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问
用法
以视图函数名(或者 app.add_url_route() 定义路由时使用的端点名)作为参数,返回对应的 URL
如后台:
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/user')
def user3():
return 'zxy'
注:此处@app.route('/user')
的url名为user与对应的视图函数名user3不对应,这是为了接下来演示区别,实际开发中尽可能保持一致
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="{{ url_for('user3') }}">点击</a>
</body>
</html>
要在href中使用url_for,语法{{url_for('视图函数名')}}
参数
url_for('视图函数名',变量名=变量值)
如何在flask后台获取url_for传递回来的参数:使用request.args.get(``'变量名'``)
如
#前端
<a href="{{ url_for('user3',age=15) }}">点击</a>
#flask后台
@app.route('/user')
def user3():
age = request.args.get('age')
print(age) #15