flask之jinja2入门

一、jinja2的基础使用

flask内置模板语言,设计思路来自于django引擎

1、flask中返回jinja2模板

@app.route('/index',methods=['GET','POST']
def	index():
	str='python'
	list1=[1,2,3]
	return render_template('temp.html',str1=str1,list1=list1)#返回页面及页面jinja2所需数据
if __name__='__main__':
	app.run(debug=True)

利用字典传参

将所需的数据写进字典中,利用解包的方式传入参数,这样就不需要再写很长的返回参数了

@app.route('/index',methods=['GET','POST']
def	index():
	str='python'
	list1=[1,2,3]
	data={
		'str1':str1,
		'list1':list1
	}
	return render_template('temp.html',**data)
if __name__='__main__':
	app.run(debug=True)

2、模板语言

{{ … }}:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。
{% … %}:装载一个控制语句,每个控制语句末尾都需要对应的end控制语句,控制变量包在控制语句和end控制语句之间
{# … #}:装载一个注释,模板渲染的时候会忽视这中间的值。

if语句
{% if newlist %}
{{newlist}}
{{ elif list1}}
{{list1}}
    {% else %}
    {{list2}}
    {% endif %}


判断是否有newlist列表,如果有则返回newlist列表,否则返回list1列表

for语句
{% for i in list1 %}<br>
    {{i}}
    {% endfor %}

用for循环输出list1中所有的元素

3、过滤器

{{ 变量名|过滤器 }}

1、常用自带过滤器

1、字符串
upper

将变量表示的字符串字母全部变成大写字母

reverse

反转字符串

lower

将变量中的字母全部变成小写

title

变量中的单词首字母大写

format

占位符填充,传入参数填入占位符

safe

取消转义,让数据不受特殊字符转义

truncate

截断字符串,指定某个字符串显示部分

2、列表
length

用于得到列表长度

first

用于取出列表首个元素

last

取出列表末尾元素

sort

排序列表

sum

列表中数字求和

2、自定义过滤器

1、定义过滤器函数
def list_reverse (ls):
    """ 自定义字符串反转 """
    ls.reverse()
    return ls

一个普通的处理数据的函数

2、注册成为模板过滤器
1、使用函数进行注册
app.add_template_filter(list_reverse,'asd')

第一个参数是过滤器函数,第二个参数是需要使用的名字

2、使用装饰器进行注册
@app.template_filter('lsreverse')
def list_reverse (ls):
    """ 自定义字符串反转 """
    ls.reverse()
    return ls

直接在装饰器里写使用名

二、宏

用于提高代码复用率
最简单封装好的对象

1、宏的定义

使用macro定义

    {% macro func1(label='',type='text',name='') %}
    <label>{{label}}</label><input type="{{type}}" name="{{name}}">
    {% endmacro %}

2、宏的使用

在同一页面上使用

直接在定义页面下写入如下代码

<form>
        {{func1('输入密码',type='password',name='pwd')}}
        {{func1('输入用户名',name='username')}}
    </form>

使用flask返回页面
在这里插入图片描述

在另一个页面调用宏
{% import 'temp3.html' as func_form %}
<form>
    {{func_form.func1('输入密码',type='password',name='pwd')}}
    {{func_form.func1('输入用户名',name='username')}}
</form>

使用flask返回该页面,同样得到如下页面
在这里插入图片描述

三、继承

类似于面向对象中的类

1、模板页面

    {%block top%}
    这是第一个模块
    {%endblock%}
    {%block asd%}
    这是内容
    {%endblock%}
    {%block footer%}
    这是页脚
    {%endblock%}

2、调用模板

{% extends 'base.html' %}

base.html为编写的模板页面

模板的修改

在当前页面修改完直接继承原模板

{% block alter %}
修改后的内容
{{super()}}
{% endblock %}

四、包含

直接将整个完整的页面加载到本页面

{% include 'index.html'}
ignore missing

如果找不到指定的页面,则忽略

{% include 'index.html' ignore missing %}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值