Flask学习 二 模板
jinja2模版
from flask import Flask,render_template
app = Flask (__name__)
@app.route ('/<name>')
def index(name):
    return render_template('index.html',name=name)
@app.route ('/user/<name>')
def user(name):
    return render_template('user.html',name=name)
if __name__ == '__main__':
    app.run (debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Hello! {{ name|capitalize }}
</body>
</html>
jinja2 能识别所有类型的变量,比如列表,字典,对象
<p>{{ mylist[3]}}</p>
<p>{{ mydict['key']}}</p>
<p>{{ mylist['key']}}</p>
<p>{{ myobj.somemethod() }}</p>
过滤器
safe 渲染值时不转义
capitalize 把值的首字母转换成大写,其他字母小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母变成大写
trim 把值的首尾空格去掉
striptags 渲染之前把所有的HTML标签都删除
控制结构
if条件控制
{% if user %}
    hello {{ user }}
{% else %}
    hello,stranger!
{% endif %}
for 循环
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
宏(函数)
{% macro render_comment(comment) %} #声明一个宏(函数)
    <li>{{ comment }}</li>    # return 值
{% endmacro %}  #结束
<ul>
    {% for comment in comments %}
        {{ render_comment(comment) }}  #调用宏
    {% endfor %}
</ul>
导入宏
{% import 'macros.html' as macros %}
<ul>
    {% for comment in comments %}
        {{ macros.render_comment(comment) }}
    {% endfor %}
</ul>
模版继承
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% block head %}
<title>{% block title %}{% endblock %}- my application</title>
{% endblock %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
base html
{% extends 'base.html' %}
{% block title %}Index{% endblock %}
{% block head %}
    {{ super() }}
    <style>
    </style>
{% endblock %}
{% block body %}
    <h1>hello,world!</h1>
{% endblock %}
index html
使用flask-bootstrap 集成Bootstrap
pip install flask-bootstrap
安装后即可继承使用Bootsftrap所有文件的基模版
bootstrap 中scripts和styles块如果想添加新内容,必须使用super()函数
{% block scripts %}
    {{ super() }}
    <script type="text/javascript" src = 'myscript.js'></script>
{% endblock %}
自定义错误页面
url_for()
url_for('index',_external=true) 返回绝对路径
base 模版添加icon图标
falsk-moment本地化日期和时间
pip install flask-moment
from flask_moment import Moment
from datetime import datetime
moment = Moment(app) @app.route ('/')
def index1():
return render_template('index.html',current_time = datetime.utcnow()) if __name__ == '__main__':
app.run (debug=True)
<p>本地时间和日期是{{ moment(current_time).format('LLL') }}</p>
 <p>那是{{ moment(current_time).fromNow(refresh=True) }}</p>
format('LLL')对应的不同复杂度
fromNow会显示相对时间戳
flask-moment 包含format()、fromNow()、fromTime()、calendar()、valueOf()、unix()
常用格式化参数

设置语言
<!--使用中文,默认是英语的-->
{{ moment.lang("zh-CN") }} 在模版中渲染,如:
<p>现在时间时: {{ moment().format('YYYY年M月D日, hh:mm:ss a') }}.</p>
hh:mm:ss 12小时制,
HH:mm:ss 24小时制
<p>已经过去了: {{ moment().fromTime(time) }}.</p> <p>{{ moment().calendar() }}.</p>
结果
现在时间时: 2015年4月22日, 10:06:33 上午. 已经过去了: 21年内. 今天上午10点06.
Flask学习 二 模板的更多相关文章
- [Flask]学习杂记--模板
		这个学习杂记主要不是分享经验,更多是记录下falsk的体验过程,以后做东西在深入研究,因为django之前用的时间比较长,所以很多概念都是一看而过,做个试验了解下flask的功能. flask中使用是 ... 
- flask 学习(二)
		安装了flask扩展 以及flask-bootstrap 默认情况下,flask在template文件夹寻找模板. flask 加载的是Jinja2模板,该模板引擎在flask中由函数render_t ... 
- flask学习(二):认识web
		url详解: URL是Uniform Resource Locator 的简写,统一资源定位符 一个URL由以下及几部分组成: scheme://host:port/path/?query-strin ... 
- web开发框架Flask学习二
		jinja2模板规范 在当前项目中创建一个文件为templates的文件夹,将其设置为模板文件夹,新建的html为模板页面, 在视图函数中使用render_template(".html的文 ... 
- Flask学习目录
		目录 Flask学习初识 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() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于 ... 
随机推荐
- Bzoj4869: [Shoi2017]相逢是问候
			题面 传送门 Sol 摆定理 \[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~~~~~~~~~~~gcd(a,p)=1\\ a^b~~~~~~~~~~~~~~~~~ ... 
- 【linux之进程管理,系统监控】
			一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ... 
- CentOS7下安装MySQL的安装与配置(yum) (转)
			原文链接:http://www.centoscn.com/mysql/2016/0626/7537.html 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mys ... 
- 笔记:基于DCNN的图像语义分割综述
			写在前面:一篇魏云超博士的综述论文,完整题目为<基于DCNN的图像语义分割综述>,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感 ... 
- python PEP8相关介绍
			在学习了python相关技术之后,开始重视其开发规范,以满足代码的可读性以及可维护性.主要的是学习了PEP8-style for python code的相关内容. 代码布局 缩进:每一级4个缩进.连 ... 
- java导出word
			public void dayinHw(HttpServletRequest request, HttpServletResponse response){ String id = request.g ... 
- git团队协作
			hi,team,我们目前使用的是git做项目管理,它是非常优秀的版本控制工具,使用好可以极大提高我们团队开发效率.但是,出现不必要的冲突和代码丢失就要费时解决这些可避免的问题. git开发流程 这个流 ... 
- Problem : 1022 ( Train Problem I )
			做题思路必须很清晰啊....可以用数组存储in或out来着,第一次C++用string啊,效果还行 Problem : 1022 ( Train Problem I ) Judge Status : ... 
- webuploader 上传文件  生成链接下载文件
			最近 在asp.net MVC 项目 需要实现一个Excel和 图片上传功能.之前有使用过SWFUpload 做过上传图片功能,在本次实现过程中,有人推荐WebUploader 上传组件,因此采用we ... 
- Vue解析一之挂载全局变量与方法
			1.在mian.js里面进行Vue对象的原型连的挂载Vue.prototype.$ajax = Ajax; 2.使用Mixin: VuVue.mixin({ data(){ return { Host ... 
