Flask web开发(3):模板

本系列笔记是我阅读Miguel Grinberg的《Flask Web Development》的笔记,标题与书本同步。希望通过记录技术笔记的方式促进自己对知识的理解。

本篇对应书本第三章:模板。

模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替代变量,再返回最终得到的响应字符串,这一过程成为渲染。

Jinja2模板引擎

Flask渲染模板使用的是Jinja2模板引擎。

渲染模板

变量

模板中使用的{{ name }}结构表示一个变量,它是一种特殊的占位符,告诉模块引擎这个位置的值从渲染模板时使用的数据中获取。

Jinja2能识别所有类型的变量,示例:

变量过滤器

过滤器名添加在变量之后,中间使用竖线分隔。

常用过滤器:

过滤器名 说明
safe 渲染值时不转义
capitalize 把值得首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都换成大写
trim 把值的首位空格去掉
striptags 渲染之前把值中所有的HTML标签都删掉

控制结构

条件控制结构

渲染一组元素

复用代码片段

模板继承

使用Flask-Bootstrap集成Twitter Bootstrap

Bootstrap是Twitter开发的一个开源框架,它提供用户界面组件可用于创建整洁且具有吸引力的网页,而且这些网页还能兼容所有现代Web浏览器。Bootstrap是客户端框架,不会直接涉及服务器。可以在模板中引用Bootstrap的CSS和JavaScript文件。

安装Flask-Bootstrap扩展

使用Flask-Bootstrap的模板

Flask-Bootstrap基模板中定义的块

块名 说明
doc 整个HTML文档
html_attribs <html>标签的属性
html <html>标签中的内容
head <head>标签中的内容
title <title>标签中的内容
metas 一组标签
styles 层叠样式表定义
body_attribs <body>标签的属性
body <body>标签中的内容
navbar 用户定义的导航条
content 用户定义的页面内容
scripts 文档底部的JavaScript声明

自定义错误页面

利用Jinja2的模板继承机制可以让templates/base.html继承自bootstrap/base.html。

链接

Flask提供了url_for()辅助函数,它可以使用程序URL映射中保存的信息生成URL。

  • url_for函数最简单的用法:以视图函数名作为参数,返回对应的URL。url_for(‘index’)得到的结果是’/’
  • 使用url_for生成动态地址时,将动态部分作为关键字参数传入。
    url_for(‘user’,name=’john’,_external=True)
  • 函数能将任何额外参数添加到查询字符串中。

静态文件

使用Flask-Moment本地化日期和时间

Flask-Moment是Flask的一个程序扩展,能够在浏览器中渲染日期和时间。

安装Flask-Moment

hello.py:初始化Flask-Moment

templates/base.html: 引入 moment.js库

hello.py: 加入一个datetime变量

templates/index.html: 使用Flask-Moment渲染时间戳

1 2 收藏 1 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
  • alexhan 转行当程序员 2016/08/11

    我现在也在学这本书,感觉真的是书读百遍,其义自现啊,多看几遍就能理解的更多。

跳到底部
返回顶部