1.新建manage.py文件

from flask import Flask, render_template, render_template_string, g

from flask_script import Manager

app = Flask(__name__)

# 配置自动加载模板文件,调试模式下会自动开启

app.config['TEMPLATES_AUTO_RELOAD'] = True

manager = Manager(app)

@app.route('/')

def index():

# return '模板引擎'

# 渲染模板文件

return render_template('index.html')

# 渲染模板字符串

# return render_template_string('<h1>渲染模板字符串</h1>')

# 使用变量

@app.route('/var/')

def var():

# g是一个全局的对象,该变量不要分配就可以在模板中使用

# 在一次请求上下文中保持不变

g.name = 'xxx'

# return render_template('var.html', name='goudan')

return render_template_string('<h1>Hello {{g.name}}</h1>')

# 使用过滤器

@app.route('/filter/')

def filter():

return render_template('filter.html', name='xiaoming', user='<b>user</b>')

# 流程控制

@app.route('/ctrl/')

def ctrl():

return render_template('ctrl.html', name='lucy')

# 文件包含

@app.route('/include/')

def include():

return render_template('include1.html')

# 宏的使用

@app.route('/macro/')

def macro():

# return render_template('macro.html', name='dahua')

return render_template('macro1.html', name='dahua')

# 模板继承

@app.route('/extends/')

def extends():

return render_template('children.html')

if __name__ == '__main__':

manager.run()

2.各个模板文件

index.html

<h1>模板文件渲染</h1>

var.html

{# 注释:变量应该放在两个大括号中 #}

<h1>hello {{ name }}</h1>

<h1>hello {{ g.name }}</h1>

ctrl.html

{% if name %}

<h1>Hello {{ name }}!</h1>

{% else %}

<h1>Hello World!</h1>

{% endif %}

<ol>

{% for i in range(5) %}

<li>{{ i }}</li>

{% endfor %}

</ol>

fliter.html

<h1>Hello {{ name | upper }}</h1>

{# 过滤HTML标签 #}

<div>{{ user | striptags }}</div>

{# 渲染时不转义 #}

<div>{{ user | safe }}</div>

{# 动态开启关闭转义 #}

{% autoescape False %}

<div>{{ user }}</div>

{% endautoescape %}

include.html

<h1>这是include1.html中的内容</h1>

{% include 'include2.html' %}

include2.html

<div>这是include2.html中的内容</div>

macro.html

{# 定义宏 #}

{% macro show_name(name) %}

<h1>Hello {{ name }}!</h1>

{% endmacro %}

{# 调用宏 #}

{{ show_name(name) }}

macro1.html

{# 导入宏 #}

{% from 'macro.html' import show_name %}

<h1>这是原有的内容</h1>

{# 调用宏 #}

{{ show_name(name) }}

parents.html

<html>

<head>

<meta charset="UTF-8">

<title>{% block title %}基础模板标题{% endblock %}</title>

</head>

<body>

{% block body %}<div>默认内容</div>{% endblock %}

</body>

</html>

children.html

{# 继承自另一个模板 #}

{% extends 'parents.html' %}

{# 根据block可以修改原有的block内容 #}

{% block title %}子模板标题{% endblock %}

{% block body %}

{# 保留基础模板中的内容 #}

{{ super() }}

<div>新加的内容</div>

{% endblock %}

flask中基础模板templates相关推荐

  1. flask中jinjia2模板引擎详解3

    接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...

  2. Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    https://www.cnblogs.com/DragonFire/p/9259999.html 是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jin ...

  3. Flask中Jinja2模板|如何在Jinja2中格式化一个日期

    使用Jinja2,我如何格式化一个日期字段?我知道在Python中我可以简单地做到这一点. print(car.date_of_manufacture.strftime('%Y-%m-%d')) 有两 ...

  4. flask中jinjia2模板引擎使用详解5

    接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%} 下面引用官方 ...

  5. c++中的模板_C ++中的模板

    c++中的模板 Templates in C++ are an abstract version of Generic Programming wherein the code is written ...

  6. Flask框架之模板继承与案例05

    Flask框架之模板继承与案例05 一,模版继承 二,静态文件的配置 1.这里列举一个小例子: 三,模版案例(制作豆瓣评分页面) 1.效果图: 2.数据准备: 3.代码链接 一,模版继承 Flask中 ...

  7. 初学者html网页模板_初学者:在MS Office 2010和2007中使用模板

    初学者html网页模板 Sometimes your boss might want you to create a spreadsheet or PowerPoint presentation an ...

  8. Flask框架基础Jinja2模板

    Flask框架基础Jinja2模板-- 潘登同学的flask学习笔记 文章目录 Flask框架基础Jinja2模板-- 潘登同学的flask学习笔记 return 模板 Template 模板的使用 ...

  9. Flask 中的Jinja2模板引擎

    Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...

  10. Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()

    在渲染模板时,不需要手动分配,可以直接在模板中使用的模板变量及函数:config.request.url_for().get_flashed_messages() 在Flask中,有一些特殊的变量和方 ...

最新文章

  1. Android TV 快进帧预览
  2. 基于电子邮件的InfoPath表单发布的注意点 [Infopath 2007]
  3. php添加填空,PHP之preg_replace_callback(),将填空题的[[]]替换成______
  4. opencv中的安全指针和指针对齐
  5. 201506110248 ---实验报告
  6. 双亲委托类加载机制_图解JVM类加载机制和双亲委派模型
  7. uefi能重置系统吗_无惧UEFI, Win10也能玩转一键自动还原
  8. 异常和Log4j日志
  9. 盘点常见元器件级性识别方法
  10. JavaScript数组反转教程
  11. 百度地图车辆运动轨迹
  12. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  13. 没有学历可以做程序员吗?
  14. 2022年全球与中国电缆悬挂夹市场现状及未来发展趋势
  15. 初中数学教师资格证考试成功通过前辈复习经验分享
  16. Java实现-中位数
  17. 【404 App】2.0全新版本正式来袭之ALL模块。
  18. ValueError: array must not contain infs or NaNs
  19. 信号幅度单位/功率单位 及其换算 Layout长度单位
  20. C51简易计算器微机课设

热门文章

  1. JAVA除数为0报错?
  2. origin柱状图同时有两组数和两组数差值_SQL和Pandas同时掉到河里,你先救谁?
  3. 笔记本电脑处理器(CPU)性能排行榜
  4. Excel如何合并相同项单元格
  5. MAC chrome 谷歌浏览器全屏显示——隐藏菜单栏
  6. 【C语言】数组和函数
  7. 142. 环形链表 II AND 633. 平方数之和
  8. DeviceDriver(十四):多点触摸(MT协议,Input子系统)
  9. [视频发布] 掘金 Podcast 报名中,摩拜单车、美团点评团队分享 Vue 最佳实践
  10. ubuntu18.04通过deb文件安装软件