Flask 模板渲染以及静态文件
模板-jinja
- Flask 中与Django略有不同,Flask中模板的语法比Django中的语法更接近Python;
基础用法
- 指定模板存放的位置:templates;
- 该信息,在实例化Flask对象时,即可设置,默认文件名为:templates;
- render_template():
- 类同与Django的render, 可以发送字典到 HTML模板中渲染;
- Flask模板中,执行方法时,需要添加括号;
- 继承:
等同于Django中的继承:
- {%extends "母板.html"%}
- {% include%}
- 定义全局函数:
- app.template_filter()
- app.template_global()
- 宏(Django中没有):
- 宏与常规编程语言中的函数相当。它们有助于将常用的习语放入可重复使用的功能中; 与Django中自定义的组件类似;
- 定义HTML中使用的函数:
- 语法:
<- 定义 -> {% macro input(name, value='', type='text', size=20) -%} <input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" size="{{ size }}"> {%- endmacro %} <- 调用 -> <p>{{ input('username') }}</p>
- 安全问题:
- 为了防止动态生成js代码,Flask 默认不会自动将js代码渲染上去,只会渲染成string,若想动态使用JS代码,需要另外标注;
- 过滤器 safe
- 类MarkUp:
静态文件设置
也是在实例化Flask对象时,指定,默认为 static
def __init__(
self,
import_name,
static_url_path=None,
static_folder='static',
static_host=None,
host_matching=False,
subdomain_matching=False,
template_folder='templates',
instance_path=None,
instance_relative_config=False,
root_path=None
):