[Flask]jinja2模板-宏的使用】的更多相关文章

定义宏: macros.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Micros</title> </head> <body> {% macro render_element(element)%} {%if element %} <td>{{element…
模板 简介 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请 求的上下文中才能知道. 渲染 使用真实值替换变量,再返回最终得到的响应字符串,这一过程 称为渲染.为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎. 以下列代码为例: from flask import Flask, render_template # ... @app.route('/') def index(): return render_template('index.htm…
内置全局函数 dict()函数,方便生成字典型变量 {% set user = dict(name='Mike',age=15) %} <p>{{ user | tojson | safe }}</p> {# 显示 '{"age": 15, "name": "Mike"}' #} joiner()函数,神奇的辅助函数.它可以初始化为一个分隔符,然后第一次调用时返回空字符串,以后再调用则返回分隔符.对分隔循环中的内容很有帮助…
Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gender': '中'}, {, 'gender': '男'}, {, 'gender': '女'} ] STUDENT_DICT = { : {, 'gender': '中'}, : {, 'gender': '男'}, : {, 'gender': '女'}, } 但是前提我们要知道Jinja2模板中的…
前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软件开发的时候,我们都希望开发的软件能够有很低的耦合度.而在视图中主要是处理业务逻辑和返回响应的,在web开发中,响应主要是渲染HTML文本,如果把渲染的这一个过程在视图中做的话,会导致耦合度特别高,难以维护.这样就引入了模板,目的是为了把视图中的业务处理和响应分开,这样维护的成本就会降低. 二.Ji…
为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa2模板的创造者也是Flask的创造者,所以不需要额外安装包. 1. Flask使用模板 1.1 建立模板 在程序的同一级目录下建立templates目录,在该目录下建立user.html <!DOCTYPE html> <html lang="en"> <he…
我们使用一个简单的例子切入到Jinja2模板引擎,形式最简单的Jinja2模板引擎就是一个包含响应文本的文件,实例如下: <h1>Hello World!</h1> 最简单的包含变量的模板引擎实例如下: <h1>Hello, {{ name }}!</h1> 渲染模板 默认情况下,Flask 在程序文件夹中的templates 子文件夹中寻找模板.在下一个hello.py版本中,要把前面定义的模板保存在templates 文件夹中,并分别命名为index.h…
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子. 请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子: before_first_request 在处理第一个请求前执行 before_request 在每次请求前执行 如果在某修饰的函数中返回了一个响应,视图函…
jinja2模板中有自带的过滤器,有需要直接拿来使用.也可以自己定义过滤器 在过滤器中,有一些常见得操作及关键字.有对字符串的操作,还有对大小写转换的操作.还有对list的操作 过滤器的语法 {# 过滤器调用方式 {{ 变量 | 过滤器的名称 }} #} 这里用到了注释模板中的注释 首先整理一下关键字 字符串: 1.对大写转换为小写,lower.相对的,那么就有小写转换为大写,upper. 那么还有是首字符大写,captialize,这个单词在字符串的操作中出现过 2.还有一个转义.如果在输出中…
3.5 宏.继承.包含 类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余. Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复. 定义宏 {% macro input() %} <input type="text" name="username" value="" size="/> {% endmacro %} 调用宏 {{ inpu…