【Flask】 python学习第一章 - 5.0 模板
jinjia2 模板 python实现 flask 内置语言 参照Djago实现
设置模板文件夹

设置模板语言 jinja2

demo6_template.html ----> 从代码渲染值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
你有事情我帮忙 我住隔壁我姓王<br>
{#取值#}
{{ my_int}}
{{ my_list}}
</body>
</html>
demo6_template.html
demo6_template.py ------> render_templete("demo6_template.html", 传入渲染值 )
from flask import Flask, request, render_template app = Flask(__name__) # 展示模板渲染
@app.route("/")
def demo1():
my_str = ""
my_int = 10
my_list = ["a", "b", "c", "d"]
return render_template('demo6_template.html',
my_str=my_str,
my_int=my_int,
my_list=my_list) if __name__ == '__main__':
app.run(debug=True,port=2222)
demo6_template.py
过滤器
{{itheima | upper}}
from flask import Flask, request, render_template app = Flask(__name__) # 展示模板渲染
@app.route("/")
def demo1():
my_str = ""
my_int = 10
my_list = ["a", "b", "c", "d"]
my_dict = [
{"username":"白菜",
"price": 20
},
{
"username": "萝卜",
"price": 30
}
]
return render_template('demo6_template.html',
my_str=my_str,
my_int=my_int,
my_list=my_list,
my_dict=my_dict
) # 自定义过滤器 本质上python函数
# 装饰器 反转
# 过滤器名称
# 方式一
@app.template_filter("listreverse")
def do_listreverse(li):
temp = list(li)
temp.reverse()
return temp # 方式二 直接添加过滤器
# app.add_template_filter(do_listreverse,"listreverse") if __name__ == '__main__':
app.run(debug=True,port=2222)
demo6.py
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
你有事情我帮忙 我住隔壁我姓王<br>
{#取值#}
{{ my_int}}
{{ my_list}}
{#大写#}
{{ 'itheima' | upper}}
{#小写#}
{{ 'ITHEIMA' | lower }}
{#反转#}
{{ 'THEIMA' | reverse }}
{#反转小写#}
{{ 'ITHEIMA' | reverse | lower }} {#默认html字符串按照原样子显示 如果标识safe 就会按照html语言格式 进行执行 相反 escape#}
{{ my_list | safe }} {#传参数 求和 #}
{{ my_dict | sum(attribute='price') }} {#列表反转#}
<br>
{{ my_list | listreverse }}
<br>
{{ my_list }} </body>
</html>
demo6.html
循环遍历
{% for item in my_list if my_list.id != 5 %}
{% if loop.index == 1%}
<li>item.value<li>
{% endif %}
{% endfor %}
for.py
for.html
未完待续
代码复用
macro 宏
# 定义所有宏文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form>
<label>用户名:</label><input type="text" name="username"><br/>
<label>身份证号:</label><input type="text" name="idcard"><br/>
<label>密码:</label><input type="password" name="password"><br/>
<label>确认密码:</label><input type="password" name="password2"><br/>
<input type="submit" value="注册">
</form> {% macro input(label='',type='',value = '',name='') %}
<label>{{ label }}</label><input type = "{{ type }}" name = "{{ name }}">
{% endmacro %} <form>
{{ input('用户名',name = 'username') }}
</form>
</body>
</html>
macro.html
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("demo1_template.html")
if __name__ == '__main__':
app.run()
macro.py
继承
demo:
{%block contentblock%}
填充内容
{%endblock%}
extends:
{% extends "demo.html"%}
{%block contentblock%}
{{super()}} 继承父类内容
子类内容
{%endblock%}
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("demo1_template.html")
@app.route("/demo1")
def demo1():
return render_template("demo2_template.html")
@app.route("/demo")
def demo():
return render_template("demo.html")
if __name__ == '__main__':
app.run()
extend.py
{% extends 'demo2_template.html'%}
{% block contentblock %}
{{ super() }}<br/>
我是子类中间<br/>
{% endblock %}
extends.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
我的顶部<br/>
{% block contentblock %}
我是父类的中间<br/>
{% endblock %}
我是底部<br/>
</body>
</html>
base.html
包含:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("demo1_template.html")
# 宏
@app.route("/demo1")
def demo1():
return render_template("demo2_template.html")
# 继承
@app.route("/demo")
def demo():
return render_template("demo.html")
# 包含
@app.route("/demo2")
def demo2():
return render_template("demo3_template.html")
if __name__ == '__main__':
app.run()
include.py
<h1>哈哈哈哈哈哈</h1>
include.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include "include.html" %}
{% include "include.html" %}
{% include "include.html" %}
{% include "include.html" %}
</body>
</html>
demo3_template.html
未完待续
【Flask】 python学习第一章 - 5.0 模板的更多相关文章
- 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图
WTF表单 wtf.py pip install flask-wtf # 安装 from flask_wtf import FlaskForm from wtform import StringF ...
- 【Flask】 python学习第一章 - 2.0 视图方式和返回值
路由参数与请求方式制定 ALT+回车 pycharm 快速导包 demo3 指定访问地址 与请求方式 # 给路由传入参数 使用尖括号 ,视图函数需要接收参数 @app.route(&q ...
- 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文
钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest 第一次请求前触发 after_request 请求后触发 并返回参数 tear ...
- 【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉
3.1正则转换器定义 Class RegexConverter(BaseConverter): regex = "[0-9]{6}" app.url_map.converters[ ...
- 【Flask+Redis】 python学习第一章 - 7.0 断言 数据库测试 redis学习
assert 断言 def div(num1, num2): # 断言 assert isinstance(num1, int), "值类型错误" assert isinstanc ...
- python学习 第一章(说不定会有第零章呢)one day
------------恢复内容开始------------ 一.啥是python python是吉尔·范罗苏姆于1989年开发的一个新的脚本解释程序,是ABC语言的一种继承. 二.python的特点 ...
- 【Flask】 python学习第一章 - 创建与运行参数
windos 创建环境 sudo pip install virtualenv # 安装virtualenv virtualenv -p python dir_name cd dir_name p ...
- Python 学习第一章
学习内容如下: Python 介绍 Python 3 VS Python 2 软件的安装 第一个 Python 程序 变量与字符编码 用户输入与注释 一.Python 介绍 python的创始人为吉多 ...
- Python学习第一章
1.Python保留字即是关键字,我们不可以把他们当作任何标识符名称. python的标准库提供了一个keyword模板,可以输出当前版本的关键字: >>>import keywor ...
随机推荐
- shell中 >/dev/null 2>&1是什么意思
原文地址:http://juke.outofmemory.cn/entry/295292 我们经常能在 shell 脚本中发现 >/dev/null 2>&1 这样的语句.以前的我 ...
- Linux下安装配置rocketmq
1.安装jdk,如果系统有原来的系统自带的先删掉,因为很多库不全,自己需要到jdk官网下载包. 卸载CentOS自带的OpenJdk: [root@centos-lx /]# rpm -qa | gr ...
- 【常用技巧】标准模板库(STL)
[常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...
- Git_从远程branch取回所有最新代码,暴力覆盖本地 && GIT基本结构
假设你本地有一个xx分支对应着远端的xx分支,当前,你在本地的xx分支进行了修改(可以是执行了add, commit,但不要push),然后,现在想从远端的xx分支拿到最新的代码,可以用下图方法覆盖掉 ...
- 【剑指offer】平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 分析:采用后序遍历的方式判断左右子树的高度差是否大于1 class Solution { public: bool flag; int f(T ...
- 029 SSM综合练习05--数据后台管理系统--订单分页查询
1.PageHelper介绍 PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql.oracle.mariaDB.DB2.SQLite.H ...
- [转帖]Linux超级用户root口令忘记怎么办?
Linux超级用户root口令忘记怎么办? 2010-05-10 12:15:00 monkey_d_meng 阅读数 5535 收藏 更多 分类专栏: Linux 版权声明:本文为博主原创文章 ...
- Tarjan求有向图强连通分量 BY:优少
Tarjan算法:一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法. 定义给出之后,让我们进入算法的学习... [情境引入] [HAOI2006受欢迎的牛] 题目描述: 每头 ...
- [BZOJ4382][POI2015]Podział naszyjnika (神奇HASH)
[问题描述] 长度为n 的一串项链,每颗珠子是K 种颜色之一.第i 颗与第i-1,i+1 颗珠子相邻,第n 颗与第1 颗也相邻. 切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中 ...
- flask源码系列
更新中 HTML文档中元素存在,但是在浏览器中不显示.一般用于配合JavaScript代码使用. 04 LocalStack和Local对象实现栈的管理 05 Flask源码之:配置加载 06 Fla ...