二.Flask 学习模板
Flask 为你配置 Jinja2 模板引擎。使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行。
至于模板渲染? 简单来说,就是将“数据”渲染到你的模板里。看完以下章节示例你就会知道了。
(其实更为推荐的方式是前后端分离,不推荐用Flask模板,以下仅供学习参考)
模板基础
先来看一个最简单的模板示例:
 from flask import Flask, render_template
 app  = Flask(__name__)
 @app.route("/")
 def template1():
     return render_template("index.html")
 if __name__=='__main__':
     app.run()

那上述 index.html 这类 html 模板文档应放置在哪呢? Flask 会在 templates 文件夹(注意拼写)内寻找模板。因此,如果你的应用是一个模块,那么模板文件夹应该在模块旁边;如果是一个包,那么就应该在包里面:
    情形 1: 一个模块:
      /application.py
      /templates
          /xxx.html
    情形 2: 一个包:
      /application
        /__init__.py
        /templates
模板渲染
这边仅简单介绍下模板渲染,可以充分使用 Jinja2 模板引擎的威力。更多内容,详见官方 Jinja2 模板文档 。
新建一 flask.html , 同样放置于 templates 文件夹中,body 内容参考如下:
<body>
<h1>{{ content }}</h1>
</body>
其中 {{ content }} 即为需要传递的参数; 这边的模板文件 跟 HTML文件 的区别只是里面加入了以 {{ ... }} 组成的动态内容占位符
同上例,新建一路由,代码如下:
@app.route("/flask")
def template2():
    c = "flask"
    return render_template("flask.html",content=c)
示例运行后,访问 localhost:5000/flask 会返回显示 flask.html , 其中 content 部分会返回代码中你所设置的值:

模板衍生
在模板内部你也可以访问 request 、session 和 g 对象,以及 get_flashed_messages() 函数。
模板在继承使用的情况下尤其有用, 如需了解,请参阅模板继承文档 。简单的说,模板继承可以使每个页面的特定元素(如页头,导航,页尾)保持一致。
自动转义默认开启。因此,如果 name 包含 HTML ,那么会被自动转义。如果你可以信任某个变量,且知道它是安全的 HTML (例如变量来自一个把 wiki 标记转换为 HTML 的模块),那么可以使用 Markup 类把它标记为安全的。否则请在模板 中使用 |safe 过滤器。更多例子参见 Jinja 2 文档。
本篇博文仅简单介绍下 Flask 模板,简单的页面使用 Flask 模板是很方便的,但复杂的就麻烦了。诚如开头所言,推荐前后端分离的做法,详细的模板使用还请参阅 Jinja 2 文档。
二.Flask 学习模板的更多相关文章
- Flask 学习(二)jinja2模板介绍
		控制语句和表达式 举例 Flask Python代码 from flask import Flask, render_template, redirect, request app = Flask(_ ... 
- Python Flask学习笔记之模板
		Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ... 
- Flask 学习篇二:学习Flask过程中的记录
		Flask学习笔记: GitHub上面的Flask实践项目 https://github.com/SilentCC/FlaskWeb 1.Application and Request Context ... 
- Flask 学习(三)模板
		Flask 学习(三)模板 Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于 ... 
- Flask网页模板的入门
		#网页模板需要导入render_template from flask import Flask,render_template 方法一: #使用render_template模块来渲染模板文件 ... 
- flask 基本操作  模板语言 session
		Django web:优点:大而全,ORM models ,model Form ,admin ,csrf ,session缺点:资源浪费 Flask web:优点:小而精,ORM:x , Form: ... 
- Flask学习之六 个人资料和头像
		英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-vi-profile-page-and-avatars ... 
- Flask学习之五 用户登录
		英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins 中文翻译地址:http:// ... 
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
		From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ... 
随机推荐
- C# [Win32] [GDI+] [API] Load HFONT from Memory
			// gdiplusenums.h //-------------------------------------------------------------------------- // Fo ... 
- 记录PHP的执行时间
			网上不少误导信息,实际上这个答案在PHP源码中的Zend文件夹下bench.php是有的 在此纠正下网络上复制粘贴造成的错误.希望后来人少踩点坑. function getmicrotime() { ... 
- multiprocessing
			multiprocessing multiprocessing模块是跨平台版本的多进程模块. multiprocessing模块提供了一个Process类来代表一个进程对象. multiprocess ... 
- php短信验证码接口接入流程及代码示例
			对于绝大部分企业来说,所使用的短信验证码接口都是第三方短信服务商所提供,目前市场上短信服务商有很多,在此向大家推荐一家动力思维乐信,运营13年,值得信赖! 就拿动力思维乐信短信验证码接口为例,详细介绍 ... 
- C++之 类型定义语句--typedef
			typedef的作用是给一个已经存在的数据类型起个别名. 使用的语法形式是:typedef 已有类型名 新类型名表;. 新类型名表中可以有多个标识符,它们之间用逗号分开,就是在一个typedef ... 
- MyBatis-day1
			Tips: 1, SQLSession通过SQLSessionFactory获得, SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得.有两种配 ... 
- DevExpress v18.2新版亮点——Reporting篇(二)
			行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ... 
- shell编程(二)
			第三十二次课 shell编程(二) 目录 十五.shell中的函数 十六.shell中的数组 十七.告警系统需求分析 十八.告警系统主脚本 十九.告警系统配置文件 二十.告警系统监控项目 二十一.告警 ... 
- cdh集群认证命令
			1.集群认证命令 kinit -kt csliyb.keytab csliyb 2.查看认证有效期命令 klist命令 3.延长认证有效期命令 kinit -R 4.手动认证失效命令 kdestroy 
- 根据图片URL获取图片的尺寸【Swift语言实现】
			import UIKit extension UIImage { /// 获取网络图片尺寸 /// /// - Parameter url: 网络图片链接 /// - Returns: 图片尺寸siz ... 
