Flask 模板渲染以及静态文件

 

模板-jinja

- jinja2 官网(点这里)

- 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
    ):

 

posted @ 2018-10-20 16:25  浮生凉年  阅读(563)  评论(0编辑  收藏  举报