Python Flask JIJIA2模板渲染
A.Flask渲染Jinja2模板和模板传参
- 如何渲染模板:
- Flask模板放在
templates
文件夹下面 - 从
flask
中导入render_template
函数 - 在视图函数中,使用
render_template
函数,渲染模板。注意:只需要填写模板的名字,不需要填写templates
这个文件夹的路径
- Flask模板放在
- 模板传参:
- 如果只有一个或者少数参数,直接在
render_template
函数中添加关键字参数就可以了 - 如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在
render_template
中,使用两个星号**,把字典转换成关键字参数传递进去,这样的代码更方便管理和使用
- 如果只有一个或者少数参数,直接在
- 在模板中,如果要使用一个变量,语法是:
{{params}}
- 访问模型中的属性或者是字典,可以通过
{{params.property}}
的形式,或者是使用{{params['age']}}
的形式
B.控制语句
所有的控制语句都是放在{%...%}中,并且有一个语句{% end xxx%}来进行结束,Jinja中常用的控制语句有if/for ...in...
-
if判断
if语句和python中的类似,可以使用
>,<,<=,>=,==,!=
来进行判断,也可以通过and,or,not,()来进行逻辑合并操作{% if xxx %} {% else %} {% end if %}
-
for循环遍历列表和字典
-
字典的遍历,语法和
python
一样,可以使用items()
,keys()
,values()
,iteritems()
,iterkeys()
,itervalues()
{% for k,v in user.items()%} <p>{{k}}:{{v}}</p> {% endfor %}
-
字典的遍历,语法和
python
一样{% for website in websites %} <p>{{website}}</p> {% endfor %}
-
C.过滤器
-
介绍与语法:
介绍:过滤器可以处理变量,把原始的变量经过处理后是再展示出来,作用的对象是变量。
-
语法:
{{avatar|default('xxx')}}
- default过滤器:如果当前变量不存在,这时候可以指定默认值
- length过滤器,求列表或者字符串或者字典或者元组的长度
过滤器其实本身就是一个函数,只不过是放在模板当中使用而已
D.继承与使用block
-
继承作用和语法:
作用:可以把一些公共的代码放在父模板中,避免每个模板写同样的代码。
-
语法:
{%extends 'base.html'%} # extends 指令声明这个模板衍生自base.html
2.block实现:
- 作用:可以让子模板实现一些自己的需求,父模板需要提前定义好接口。
- 注意点:子模板中的代码,必须要放在block块中。
E.URL链接和加载静态文件
1. url链接:使用`url_for(视图函数名称)`可以反转成URL
2. 静态文件,flask会从`static`文件夹中开始寻找,所以不需要再写`static`这个路径了
3. 可以加载`css`文件,`js`,还有`image`文件
```html
<!--第一个:加载css文件-->
<link rel="stylesheet" href="{{url_for('static',filename = 'css/index.css')}}">
<!--第二个:加载js文件-->
<script src="{{url_for('static',filename = 'js/index.js')}}"></script>
<!--第三个:加载image文件-->
<img src="{{url_for('static',filename = 'image/zhiliao.png')}}" alt="">
```