静态文件
动态的 web 应用同样需要静态文件。CSS 和 JavaScript 文件通常来源于此。理想情况下, 你的 web 服务器已经配置好为它们服务,然而在开发过程中 Flask 能够做到。 只要在你的包中或模块旁边创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
给静态文件生成 URL ,使用特殊的 'static' 端点名:url_for('static', filename='style.css'),这个文件应该存储在文件系统上称为 static/style.css。
模板
jinjia2为了防止跨站点脚本攻击,出于安全考虑将参数值作为字符串,例如:
app.py
def hello_world():
return render_template('index.html', title='<h1>Welcome!</h1>')
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{{ url_for('static',filename='site.css') }}">
</head>
<body>
{{ title }}
<a href="{{ url_for('.services') }}">services</a>
<a href="{{ url_for('.about') }}">about</a>
</body>
</html>
如果要显示正常结果,需做如下修改:
{% autoescape false %}
{{ title }}
{% endautoescape %}
或者:
{{ title|safe }}
则结果显示为:
第二种方法就是Flask的Jinja2模板引擎 — 过滤器,也可以自定义markdown过滤器:
demo01.py
@app.template_filter('md')
def markdown_to_html(txt):
from markdown import markdown
return markdown(txt)
@app.route('/')
def index():
response = make_response(render_template('index.html', title='<h1>Welcome!</h1>',body = '##header2'))
index.html
···
{{ body | md | safe }}
···
模板的继承--包含和宏
在模板中定义好html的格式,在子页面中重写