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 模板的更多相关文章

  1. 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图

    WTF表单  wtf.py pip install flask-wtf  # 安装 from flask_wtf import FlaskForm from wtform import StringF ...

  2. 【Flask】 python学习第一章 - 2.0 视图方式和返回值

    路由参数与请求方式制定   ALT+回车 pycharm 快速导包  demo3  指定访问地址  与请求方式  #   给路由传入参数 使用尖括号 ,视图函数需要接收参数 @app.route(&q ...

  3. 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文

    钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest  第一次请求前触发 after_request  请求后触发 并返回参数 tear ...

  4. 【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉

    3.1正则转换器定义 Class RegexConverter(BaseConverter): regex = "[0-9]{6}" app.url_map.converters[ ...

  5. 【Flask+Redis】 python学习第一章 - 7.0 断言 数据库测试 redis学习

    assert 断言 def div(num1, num2): # 断言 assert isinstance(num1, int), "值类型错误" assert isinstanc ...

  6. python学习 第一章(说不定会有第零章呢)one day

    ------------恢复内容开始------------ 一.啥是python python是吉尔·范罗苏姆于1989年开发的一个新的脚本解释程序,是ABC语言的一种继承. 二.python的特点 ...

  7. 【Flask】 python学习第一章 - 创建与运行参数

    windos 创建环境 sudo pip install virtualenv   # 安装virtualenv virtualenv -p python dir_name cd dir_name p ...

  8. Python 学习第一章

    学习内容如下: Python 介绍 Python 3 VS Python 2 软件的安装 第一个 Python 程序 变量与字符编码 用户输入与注释 一.Python 介绍 python的创始人为吉多 ...

  9. Python学习第一章

    1.Python保留字即是关键字,我们不可以把他们当作任何标识符名称. python的标准库提供了一个keyword模板,可以输出当前版本的关键字: >>>import keywor ...

随机推荐

  1. sublime的注册方法 非常好用

    摘自:https://blog.csdn.net/weixin_42444922/article/details/81006107 转载 阿东的天空之城 发布于2018-07-11 20:03:43 ...

  2. [整理] linux ubuntu 服务器键盘设置错误 完美解决

    根据 原文来源:https://blog.csdn.net/mingjie1212/article/details/48525095 进行修改. 使用命令 dpkg-reconfigure keybo ...

  3. iOS App转让、转移、迁移(App transfer) -- 仅需四步

    当需要将某个 App 出售给其他开发人员,或想要将其移至其他 App Store Connect 组织,则您需要转让该 App.您无需将 App 从 App Store 下架,即可将其所有权转让给另一 ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件对数据库Sqlite3和MySQL的支持说明

    背景分析 EasyDSS商用流媒体服务器提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作,并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求.其中,点播功 ...

  5. php 回调函数结合闭包(匿名函数)的使用示例

    <?php /** * php 回调函数结合闭包(匿名函数)的使用 */ function callback( $callback ){ $variable = 'program'; $ret1 ...

  6. java 堆调优

    一.查看kafka集群的broker的堆内存使用情况 1>.使用jstat查看gc的信息([root@kafka116 ~]# jstat -gc 12698 1s 30) 参数说明:S0C:第 ...

  7. 使用清华源进行pip install

    pypi 镜像使用帮助 pypi 镜像每 5 分钟同步一次. 临时使用 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-pac ...

  8. js生成条形码——JsBarcode

    原文地址:https://www.cnblogs.com/huangenai/p/6347607.html 介绍一下在GitHub生成条形码的js插件→JsBarcode 条码支持的有: CODE12 ...

  9. [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)

    期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...

  10. nginx通过自定义header属性来转发不同的服务

    一.背景 因为需要上线灰度发布,只要nginx接收到头部为: wx_unionid: 就会跳转到另外一个url,比如: 通过配置nginx 匹配请求头wx_unionid 来转发到灰度环境.核心:客户 ...