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


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

    比如上一篇的渲染页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    </head>
    <body>
    <form action="#" method="POST">
    {#form要求加上form.csrf_token方脚本跨域攻击#}
    {{ form.csrf_token }}
    <table border="1">
    <tr>
    <td>{{ form.username.label }}</td>
    <td>{{ form.username }}</td>
    {# 如果有错误信息,就遍历出来#}
    <td>
    {% if form.username.errors %}
    {% for error in form.username.errors %}
    <li>{{ error }}</li>
    {% endfor %}
    {% endif %}
    </td>
    </tr>
    <tr>
    <td>{{ form.email.label }}</td>
    <td>{{ form.email }}</td>
    <td>
    {% if form.email.errors %}
    {% for error in form.email.errors %}
    <li>{{ error }}</li>
    {% endfor %}
    {% endif %}
    </td>
    </tr>
    <tr>
    <td>{{ form.password.label }}</td>
    <td>{{ form.password }}</td>
    <td>
    {% if form.password.errors %}
    {% for error in form.password.errors %}
    <li>{{ error }}</li>
    {% endfor %}
    {% endif %}
    </td>
    </tr>
    <tr>
    <td>{{ form.confirm.label }}</td>
    <td>{{ form.confirm }}</td>
    <td>
    {% if form.confirm.errors %}
    {% for error in form.confirm.errors %}
    <li>{{ error }}</li>
    {% endfor %}
    {% endif %}
    </td>
    </tr>
    <tr>
    <td></td>
    <td>{{ form.accept }}{{ form.accept.label }}</td>
    </tr>

    <tr>
    <td></td>
    <td><input type="submit" value="提交"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

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

    {% macro render_field(field) %}
    <tr>
    <td>{{ field.label }}</td>
    <td>{{ field(**kwargs) }}</td>
    <td>
    {% if field.errors %}
    {% for error in field.errors %}
    <li>{{ error }}</li>
    {% endfor %}
    {% endif %}
    </td>
    </tr>
    {% endmacro %}

    在页面里面导入,并渲染

    {% import 'helper.html' as helper %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    </head>
    <body>
    <form action="#" method="POST">
    {#form要求加上form.csrf_token方脚本跨域攻击#}
    {{ form.csrf_token }}
    <table border="1">
    {{ 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) }}
    <tr>
    <td></td>
    <td><input type="submit" value="提交"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    效果一样

  • 相关阅读:
    【转载】 Deepmind星际争霸2平台使用第一轮-完成采矿
    【转载】 星际争霸2的AI环境搭建
    【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
    【转载】 强化学习在美团“猜你喜欢”的实践
    【转载】 强化学习(七)时序差分离线控制算法Q-Learning
    【转载】 强化学习(六)时序差分在线控制算法SARSA
    【转载】 强化学习(五)用时序差分法(TD)求解
    【转载】 强化学习(四)用蒙特卡罗法(MC)求解
    ubuntu 系统网络突然"网络已禁用"
    健康日志之口腔粘膜----7-13
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11544862.html
Copyright © 2020-2023  润新知