Flask Web开发实战总结笔记2

一、模板基本用法

  1. 创建模板

    Jinja2里3种常用的界定符

    语句 {%…%},如if判断,for循环等

    表达式 {{…}},如字符串,变量,函数调用等

    注释 {#…#}

  2. 模板语法

    以{%…%}为开头进行控制的输出后,需要在语句结束的地方加上{%end控制符%}作为结束标签

  3. 渲染模板

    用Flask的render_template()函数来渲染模板,第一个参数为/templates下的文件名,后面的参数是模板内需要渲染的参数,左边为形参,右边为实参,若需要传入函数时,则只需传函数名即可

二、模板辅助工具

​ 使用set标签 {%set…%} 在模板中定义变量,使用{%set…%} 和 {%endset%}定义一组变量

  1. 上下文

    使用Flask内置的4种上下文方法(config,request,session,g),或者使用app.context_processor作为装饰器或者方法自定义上下文全局变量,这样可以在标记了自定义上下文位置的地方直接返回变量值,无需再传入

  2. 全局对象

    在所有模板里均可以调用的对象。

    内置的模板全局函数有Jinja2里的range(),lipsum(),dict(),以及Flask里的url_for()和app.template_global()。上下文方法注册的函数也可作为全局对象使用

  3. 过滤器

    使用管道"|"作为过滤器的表示,右边的函数会作用于左边的变量或者字符串,可以嵌套使用。另一种使用方法为,使用 {%filter 过滤器%} 和 {%endfilter%} 作为开始和结束,将过滤器作用于该段内容上

    除了内置的过滤器,可以使用app.template_filter作为装饰器或者方法,实现自定义过滤器

  4. 测试器

    作用于变量或者表达式,返回布尔值(True或False)

    除了内置的测试器,可以通过app.template_tester作为装饰器或者方法,实现自定义测试器

  5. 模板环境对象

    在Jinja2中,由Jinja2.Environment对象控制渲染,而在Flask中可对app.jinja_env属性的字典对象的3个键值:global、filter、tests,分别设置模板环境中的全局函数、过滤器、测试器。

三、模板结构组织

  1. 局部模板

    通过 {%include 模板文件%} 导入作为局部模板

  2. 作用类似于Python里面的函数。通过 {%macro 宏名%} {%endmacro%} 定义一段宏,宏可以定义参数并返回值

    通过 {%from 模板文件 import 宏名%} 导入宏使用

    使用with context导入当前模板的上下文

  3. 模板继承

    首先要编写一个基模板(如base.html或者)来固定页面中不变的部分

    通过 {%block 块名%} {%endblock%} 定义基模板对应位置的固定内容,如head表示<head>标签内容,title表示<title>标签内容

    然后编写子模板,对基模板进行继承,第一个标签必须为 {%extends 基模板名%} 。对于基模板的块,可以通过编写同名块覆盖基模板块的功能,或者加入 {{ super() }} 对该块追加内容

四、模板进阶实践

  1. 空白控制

    对定界符内侧添加"-"去除对应显示的空白行,也可通过设置环境变量对象

    #去除Jinja2语句后的第一个空白行

    app.jinja_env.trim_blocks = True

    #去除Jinja2语句前的空白和制表符

    app.jinja_env.lstrip_blocks = True

    宏内的空白只能通过手动添加"-"进行控制

  2. 加载静态文件

    Flask内置了用于获取静态文件的视图函数,端点值为static,默认URL为/static/<path:filename>

    1.添加Favicon,即网站/收藏夹头像,设置方式为:

    <link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='favicon.ico') }}">

    2.使用css框架

    3.使用宏加载静态资源

  3. 消息闪现

    使用flash()函数可把消息存储在session当中,通过get_flashed_messages()调用,调用后将移除session里的消息

  4. 自定义错误页面

    编写错误页面模板,然后通过app.errorhandler(错误状态码)调用该页面

  5. js/css中使用Jinja2

    在js/css中定义为变量再使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值