Python Flask Web框架(四)
来源:互联网 发布:制作课程表的软件 编辑:程序博客网 时间:2024/06/06 00:02
一、静态文件
动态的 web 应用同样需要静态文件。CSS
和JavaScript
文件通常来源于此。理想情况下, 你的 web 服务器已经配置好为它们服务,然而在开发过程中 Flask 就能够做到。 只要在你的包中或模块旁边创建一个名为static
的文件夹,在应用中使用/static
即可访问。
给静态文件生成 URL ,使用特殊的static
端点名:
url_for('static', filename='style.css')
这个文件是应该存储在文件系统上的static/style.css
。
二、渲染模板
在 Python 中生成 HTML 并不好玩,实际上是相当繁琐的,因为你必须自行做好HTML转义以保持应用程序的安全。 由于这个原因,Flask 自动为你配置好 Jinja2 模版。
你可以使用方法render_template()
来渲染模版。所有你需要做的就是提供模版的名称以及你想要作为关键字参数传入模板的变量。这里有个渲染模版的简单例子, 修改hello.py
文件:
from flask import render_template@app.route('/hello/')@app.route('/hello/<name>')def hello(name=None): return render_template('hello.html', name=name)
Flask 将会在templates
文件夹中寻找模版。因此如果你的应用是个模块,这个文件夹在模块的旁边,如果它是一个包,那么这个文件夹在你的包里面:
Case 1:应用是模块(本系列实验的应用结构都是模块型):
/application.py/templates /hello.html
Case 2: 应用是包:
/application /__init__.py /templates /hello.html
对于模板,你可以使用 Jinja2 模板的全部能力。详细信息查看官方的 Jinja2 Template Documentation 。
这里是一个模版的例子,在这之前需要建立文件结构如下图所示:
然后编写hello.html
模板文件:
<!doctype html><title>Hello from Flask</title>{% if name %} <h1>Hello {{ name }}!</h1>{% else %} <h1>Hello World!</h1>{% endif %}
效果如下(这里建议在图形界面下开启两个终端,一个用来启动服务器,一个用来编写代码):
在模版中你也可以使用request,session和g对象,也能使用函数get_flashed_messages() 。
模版继承是十分有用的。如果想要知道模版继承如何工作的话,请阅读文档模板继承。基本的模版继承使得某些特定元素(如标题,导航和页脚)在每一页成为可能。
自动转义默认是开启的,因此如name
包含 HTML,它将会自动转义。如果你信任一个变量,并且你知道它是安全的(例如一个模块把 wiki 标记转换到 HTML ),你可以用Markup
类或|safe
过滤器在模板中标记它是安全的。 在 Jinja 2 文档中,你会见到更多例子。
下面一个Markup
类如何工作的基本介绍:
$ python>>> from flask import Markup>>> Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>'Markup(u'<strong>Hello <blink>hacker</blink>!</strong>')>>> Markup.escape('<blink>hacker</blink>')Markup(u'<blink>hacker</blink>')>>> Markup('<em>Marked up</em> » HTML').striptags()u'Marked up \xbb HTML'
注意:在后面的0.5版本以上:
自动转义不再在所有模版中启用。模板中下列后缀的文件会触发自动转义:.html, .htm, .xml,.xhtml
。从字符串加载的模板会禁用自动转义。
三、小结
本节讲了 flask 的静态文件和模板的基本知识,静态文件放在 static
目录中,模板文件放在templates
目录下。
四、练习
请创建一个模板和CSS
文件,并在模板引入CSS
文件,显示一个绿色的Hello ShiYanLou
字样。关于HTML
以及CSS
的学习请参考在线教程
- Python Flask Web框架(四)
- Python Flask Web框架(一)
- Python Flask Web框架(二)
- Python Flask Web框架(三)
- Python Flask Web框架(五)
- Python Flask Web框架(六)
- Python Flask Web框架(七)
- Python Flask Web框架(八)
- Python Flask Web框架(九)
- Python Web框架之Flask(1)
- 吐槽 Python Web 框架 Flask
- Python flask web框架学习
- Python明星web框架Flask
- Python基础-Web框架-Flask
- python Web开发 flask轻量级Web框架
- flask(web服务器)—Python(四)
- python web开发 之 flask教程(四)
- 【001】基于Python的Flask Web应用框架(1)
- c/c++文件操作总结
- 9.异常体系
- javamail简单的邮件发送
- opengl shader
- 算法4--双栈的利用<学习感悟>
- Python Flask Web框架(四)
- 注解反射使用
- 2012年北理复试上机题
- 各操作系统的判断
- JS高级程序设计笔记(六)- 函数
- Python IDE py开发软件工具
- java中锁的总结
- 基于Memcached的tomcat集群session共享
- Makefile经典教程