测开之路一百四十九:jinja2模板之宏

 

jinja2是python的模板引擎, 在写python web使用的过程中,macro可以节省大量的代码

 

比如上一篇的渲染页面

测开之路一百四十九:jinja2模板之宏_第1张图片





用户注册



{#form要求加上form.csrf_token方脚本跨域攻击#}
{{ form.csrf_token }}




{# 如果有错误信息,就遍历出来#}


























{{ form.username.label }} {{ form.username }}
{% if form.username.errors %}
{% for error in form.username.errors %}
  • {{ error }}

  • {% endfor %}
    {% endif %}
    {{ form.email.label }} {{ form.email }}
    {% if form.email.errors %}
    {% for error in form.email.errors %}
  • {{ error }}

  • {% endfor %}
    {% endif %}
    {{ form.password.label }} {{ form.password }}
    {% if form.password.errors %}
    {% for error in form.password.errors %}
  • {{ error }}

  • {% endfor %}
    {% endif %}
    {{ form.confirm.label }} {{ form.confirm }}
    {% if form.confirm.errors %}
    {% for error in form.confirm.errors %}
  • {{ error }}

  • {% endfor %}
    {% endif %}
    {{ form.accept }}{{ form.accept.label }}





    用宏实现:新建一个html,用macro 修饰内容(比如大量格式重复,只字段名不重复的内容)

    测开之路一百四十九:jinja2模板之宏_第2张图片

    {% macro render_field(field) %}

    {{ field.label }}
    {{ field(**kwargs) }}

    {% if field.errors %}
    {% for error in field.errors %}
  • {{ error }}

  • {% endfor %}
    {% endif %}


    {% endmacro %}

    在页面里面导入,并渲染

    测开之路一百四十九:jinja2模板之宏_第3张图片

    {% import 'helper.html' as helper %}




    用户注册



    {#form要求加上form.csrf_token方脚本跨域攻击#}
    {{ form.csrf_token }}

    {{ helper.render_field(form.username) }}
    {{ helper.render_field(form.email) }}
    {{ helper.render_field(form.password) }}
    {{ helper.render_field(form.confirm) }}
    {{ helper.render_field(form.accept) }}







    效果一样

    测开之路一百四十九:jinja2模板之宏_第4张图片测开之路一百四十九:jinja2模板之宏_第5张图片

    你可能感兴趣的:(测开之路一百四十九:jinja2模板之宏)