当路由简单时,可直接在链接中编写路由

如后台:

  1. @app.route('/')
  2. def hello_world():
  3. return render_template('index.html')
  4. @app.route('/user')
  5. def user():
  6. return 'zxy'

index.html页面中

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <a href="/user">点击</a>
  9. </body>
  10. </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

后台

  1. @app.route('/')
  2. def hello_world():
  3. return render_template('index.html')
  4. @app.route('/user')
  5. def user3():
  6. return 'zxy'

注:此处@app.route('/user')的url名为user与对应的视图函数名user3不对应,这是为了接下来演示区别,实际开发中尽可能保持一致

前端

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <a href="{{ url_for('user3') }}">点击</a>
  9. </body>
  10. </html>

要在href中使用url_for,语法{{url_for('视图函数名')}}

参数

url_for('视图函数名',变量名=变量值)

如何在flask后台获取url_for传递回来的参数:使用request.args.get(``'变量名'``)

  1. #前端
  2. <a href="{{ url_for('user3',age=15) }}">点击</a>
  3. #flask后台
  4. @app.route('/user')
  5. def user3():
  6. age = request.args.get('age')
  7. print(age) #15