Flask渲染Jinja2模板和传参
- 如何渲染模板:
- 模板放在
templates文件夹下 - 从
flask中导入render_template函数。 - 在视图函数中,使用
render_template函数,渲染模板。注意:只需要填写模板的名字,不需要填写templates这个文件夹的路径。 
 - 模板放在
 - 模板传参:
- 如果只有一个或者少量参数,直接在
render_template函数中添加关键字参数就可以了。 - 如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在
render_template中,
使用两个星号,把字典转换成关键字参数传递进去,这样的代码更方便管理和使用。 
 - 如果只有一个或者少量参数,直接在
 - 在模板中,如果要使用一个变量,语法是:
 - 访问模型中的属性或者是字典,可以通过
的形式,或者是使用. 
过滤器
- 
介绍和语法:
- 介绍:过滤器可以处理变量,把原始的变量经过处理后再展示出来。作用的对象是变量。
 - 语法:  
1
{{ avatar|default('xxx') }}
 
 - 
default过滤器:如果当前变量不存在,这时候可以指定默认值。
 - 
length过滤器:求列表或者字符串或者字典或者元组的长度。
 - 
常用的过滤器:
 
1  | abs(value):返回一个数值的绝对值。示例:-1|abs  | 
if判断
- 
语法:
1
2
3{% if xxx %}
{% else %}
{% endif %} - 
if的使用,可以和python中相差无几。
 
for循环遍历列表和字典
- 
字典的遍历,语法和
python一样,可以使用items()、keys()、values()、iteritems()、iterkeys()、itervalues()1
2
3{% for k,v in user.items() %}
<p>{{ k }}:{{ v }}</p>
{% endfor %} - 
列表的遍历:语法和
python一样。1
2
3{% for website in websites %}
<p>{{ website }}</p>
{% endfor %} 
继承和block
- 
继承作用和语法:
- 作用:可以把一些公共的代码放在父模板中,避免每个模板写同样的代码。
 - 语法:  
1
{% extends 'base.html' %}
 
 - 
block实现:
- 作用:可以让子模板实现一些自己的需求。父模板需要提前定义好。
 - 注意点:字模板中的代码,必须放在block块中。
 
 
url链接
- 使用
url_for(视图函数名称)可以反转成url。 
加载静态文件
- 语法:
url_for('static',filename='路径') - 静态文件,flask会从
static文件夹中开始寻找,所以不需要再写static这个路径了。 - 可以加载
css文件,可以加载js文件,还有image文件。1
2
3
4
5
6第一个:加载css文件
<link rel="stylesheet" href="{{ url_for('static',filename='css/index.css') }}">
第二个:加载js文件
<script src="{{ url_for('static',filename='js/index.js') }}"></script>
第三个:加载图片文件
<img src="{{ url_for('static',filename='images/zhiliao.png') }}" alt=""> 
赞赏一下
支付宝打赏
微信打赏