Flask Web开发学习笔记(5)

1.链接

任何具有多个路由的程序都需要可以连接不同页面的链接,例如导航条。
在模板中直接编写简单路由的URL链接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL就很困难。而且,直接编写URL会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板中的链接可能会失效。

为了解决这个问题,我们在模板中使用 url_for() 函数,利用以视图函数名生成URL

① 以参数为视图函数名

url_for('index')

返回相对地址,即 ‘/’

若加一个参数

url_for('index', _external=True)

则返回绝对地址,即 ‘http://localhost:5000/’

生成连接程序内不同路由的链接时,使用相对地址就足够了。如果要生成在浏览器之外使用的链接,则必须使用绝对地址,例如在电子邮件中发送的链接。

② 使用url_for()时,将动态部分作为关键字参数传入,以生成动态地址,如:

url_for('user', name='john', _external=True)

返回:http://localhost:5000/user/john

③ 传入url_for()的关键字参数不仅限于动态路由中的参数。函数能将任何额 外参数添加到查询字符串中,如:

url_for('index', page=2)

返回: /?page=2

④ 下面贴一个动态传参的例子

# main.py
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    user_id = 123
    return render_template('index.html',user_id=user_id)

@app.route('/user/')
def user_id(id):
    return render_template('user_id.html',id=user_id)

app.run()

<h1>Hello World!h1>
<li><a href="{{ url_for('user_id',id=user_id ) }}">个人信息a>

注意此处的写法!
我在 main.py 中用 render_template 向 index.html 传参渲染,在index.html 中又用 url_for 来生成动态链接.
index.html中的渲染区域(即花括号括的区域),包含 url_for函数 与参数 user_id,且花括号不可嵌套.
如以下两种写法错误!

<li><a href="{{ url_for('user_id',id={{ user_id }}) }}">个人信息a>

<li><a href=" url_for('user_id',{{ id=user_id }} ) ">个人信息a>

2.静态文件

有时我们还会使用静态文件,如在HTML中引用的图片、JavaScript和CSS。
此时,我们仍使用url_for生成URL

如在HTML中:

<link rel="stylesheet" href="{{url_for('static',filename='css/index.css') }}">

用于加载static/css目录下的index.css文件

默认设置下,Flask在程序根目录中名为 static 的子目录中寻找静态文件

你可能感兴趣的:(Flask,Web开发学习笔记)