Flask:模板
模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,具体值只在请求的上下文中才能知道.使用真实值替换变量,再返回最终得到的响应字符串.这个过程称为渲染,为了渲染模板,Flask使用了一个名为Jinja2的强大模板引擎.
前面的视图函数中,我们是通过return 'Hello World!'的方法来返回响应.但是这种情况下反馈少数的内容还可以,如果要反馈复杂的网页界面那就没办法了.这种情况就需要渲染模板了.代码如下通过render_template反馈具体的网页模板.默认情况下,Flask在程序文件夹中的template子文件夹中寻找模板.
from flask import render_template
@app.route('/')
def hello_world():
return render_template('index.html')
template中添加index.html.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask</title>
</head>
<body>
<p>欢迎来到Flask</p>
</body>
</html>
还可以在模板中传入参数并传递到html中
@app.route('/')
def hello_world():
name='zhf'
return render_template('index.html',name=name)
网页中通过{{name}}的方式进行传递.
{{ name }}<p>欢迎来到Flask</p>
还可以使用过滤器修改变量,过滤器名添加在变量后之后,中间使用竖线分隔
{{ name|capitalize }}<p>欢迎来到Flask</p>
Jinjia变量过滤器如下:
1safe:渲染值时不转义
2capitalize:把值的首字母转换成大写,其他字母转换成小写
3lower:把值转换成小写形式
4upper:把值转换成大写形式
5title:把值中每个单词的首字母都转换成大写
6trim:把值的首尾空格去掉
7striptags:渲染之前把指中所有的HTML标签都删掉
Flask中使用模板变量方式和django是一样的,都有控制结构.
@app.route('/')
def hello_world():
name=['c','c++','python']
return render_template('index.html',name=name)
HTML中的代码:
{% for i in name %}
<li>{{ i }}</li>
{% endfor %}
另一种重复使用代码的方式是模板继承,类似于python代码中的类继承.首先创建一个名为base.html的基模板.在这个模板中定义了名为head,title和body的块.块的定义是通过{% block}的方式来定义
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% block head %}
<title>{% block title %}{% endblock %}-My Applicaltion</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
在index.html中通过extends的方式来引用base.html.在extends指令之后,基模板中的3个块被重新定义,模板引擎会将其插入适当的位置,注意新定义的head块,在基模板中其内容不是空的,所以使用super()获取原来的内容.在index.html中重新定义的title,body块会覆盖base.html中的内容
{% extends "base.html" %}
{% block title %}index{% endblock %}
{% block head %}
{{ super() }}
<style>
</style>
{% endblock %}
{% block body %}
<h1>hello,world</h1>
{% endblock %}
使用Flask-Bootstrap:
在django中,Bootstrap的使用可以参考下面的这个例子
http://www.cnblogs.com/zhanghongfeng/p/7750088.html
在Flask中使用Bootstrap的方法和在django中不一样.首先需要安装Flask-Bootstrap的Flask扩展安装后使用方式如下
from flask_bootstrap import Bootstrap
app = Flask(__name__)
bootstrap=Bootstrap(app)
@app.route('/')
def hello_world():
name='zhf'
return render_template('index.html',name=name)
然后在index.html中使用方式如下:
{% extends "bootstrap/base.html" %}
{% block title %}Flask{% endblock %}
{% block content %}
<div class="container">
<div class="page-header"><h1>hello {{ name }}</h1></div>
</div>
{% endblock %}
通过extends “bootstrap/base.html”的方式来继承bootstrap的base页面,然后在页面中重新定义各种块,并在class中引用bootstrap中的CSS格式,得到的界面如下.

@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: "Times New Roman"; font-size: 10.5pt; }h1 { margin-top: 5pt; margin-bottom: 5pt; text-align: left; font-family: 宋体; font-weight: bold; font-size: 24pt; }p.p { margin: 5pt 0pt; text-align: left; font-family: "Times New Roman"; font-size: 12pt; }span.msoIns { text-decoration: underline; color: blue; }span.msoDel { text-decoration: line-through; color: red; }div.Section0 { }
自定义错误页面
在HTML中,有各种状态码来指示访问状态.比如200表示访问成功,400表示客户端请求未知页面或路由时的显示,500表示有未处理的异常时处理.为这两个错误代码指示自定义处理程序的方式如下所示.
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'),404
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'),500
当访问不存在的页面的时候提示如下.
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
Flask:模板的更多相关文章
- flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)
flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...
- flask模板,路由,消息提示,异常处理
1.flask的路由与反向路由 from flask import Flask, request, url_for app = Flask(__name__) @app.route('/') def ...
- Flask - 模板语言jinja2 和render_template高级用法
目录 Flask - 模板语言jinja2 和render_template高级用法 一. 字典传递至前端 二. 列表传入前端Jinja2 模板的操作: 三. 大字典传入前端 Jinja2 模板 四. ...
- Flask模板渲染
目录 Flask模板渲染 Jinja2模板引擎简介 模板 Jinja2 模板变量 变量 控制结构 宏,类似Python代码中的函数 模板继承 包含(Include) 过滤器 链式调用 常见内建过滤器 ...
- Flask模板注入
Flask模板注入 Flask模板注入漏洞属于经典的SSTI(服务器模板注入漏洞). Flask案例 一个简单的Flask应用案例: from flask import Flask,render_te ...
- 实验2、Flask模板、表单、视图和重定向示例
实验内容 1. 实验内容 表单功能与页面跳转功 能是Web应用程序的基础功能,学习并使用他们能够更好的完善应用程序的功能.Flask使用了名为Jinja2的模板引擎,该引擎根据用户的交互级别显示应用程 ...
- Flask 模板语言
Flask使用的是Jinja2模板引擎 举个例子: from flask import Flask, render_template app = Flask(__name__) @app.route( ...
- Flask模板_学习笔记
代码尽在我的github上面:https://github.com/521xueweihan 概述: 在Flask中,Jinja2默认配置如下: A.扩展名为.html,.htm, ...
- ThinkPhp模板转Flask模板
Template Converter 网上的PHP资源很多,项目要用Python,所以想起做一个模板转换器,从ThinkPhp转成Flask的Jinja模板. 直接指定两个目录,将目录下的模板文件转换 ...
- flask模板
做为python web开发领域的一员,flask跟Django在很多地方用法以都是相似的,比如flask的模板 模板就是服务器端的页面,在模板中可以使用服务端的语法进行输出控制 1.模板的工作原理 ...
随机推荐
- 解决php中redis client进行subscribe操作出现timeout的问题
出现该问题的原因是poll设置接收超时所致,这个超时默认设置60s 设置Redis::OPT_READ_TIMEOUT配置项: 解决方法如下: <?php $redis = new Redis( ...
- HTML5 Canvas 绘制新西兰国旗
代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...
- Win7如何修复开机画面
将下面文件保存为"修复Win7开机画面.bat"双击运行即可 bcdedit /set {current} locale zh-CN
- windows的iis做后门,隐藏访问,无日志
windows下的iis5/iis6做后门,隐藏访问,不留访问记录或者不留日志 好不容易攻下一台Windows2000/2003 IIS服务器,你一定会想,怎样才能长期占有这个“肉鸡”呢?聪明的你肯定 ...
- 【SharePoint】SharePoint 2013 使用PreSaveAction自定义客户端验证
使用PreSaveAction函数实现客户端自定义验证. 例:[项目编号]为空时,必须填写[责任者]项.(其中[项目编号]为单行文本框,[责任者]为用户/组选择框.) function PreSave ...
- TP框架模板中ifelse
{if $_username}<ul class="afterLogin"> <li class="username"><a ...
- C# 读取Excel中的数据
#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name=&quo ...
- 安装gi的时候回退root.sh的运行
</pre><pre name="code" class="html">/u01/app/11.2.0/grid/crs/install ...
- Codeforces Round #263 (Div. 2) proB
题目: B. Appleman and Card Game time limit per test 1 second memory limit per test 256 megabytes input ...
- jQuery源代码 框架分析
每个框架都有一个核心.全部的结构都是基于这个核心之上,结构建立好了之后,剩下的就是功能的堆砌. jQuery的核心就是从HTML文档中匹配元素并对其操作. 就跟一座大楼一样.让我们一步一步了解这座大厦 ...