Python Flask学习 - Jinja2 模板的基本认识和使用

Jinja2简介

Jinja 是一种快速的、富有表现力的、可扩展的模板引擎。模板中的特殊占位符允许编写类似于 Python 语法的代码,然后向模板传递数据来呈现出最终的文档。

特征
  • 模板可以被继承或者被包含。

  • 可以在模板中定义和导入(Macro,批量处理。根据一系列预定义的规则替换一定的文本模式)。

      <!--宏定义-->
    {% macro input(name, type='text', value='') -%}
      	<input type="{
          { type }}" name="{
          { name }}" value="{
          { value|e }}">
      {% endmacro %}
    
    • 宏定义要加 macro,结束时要用endmacro。宏名称为input,有三个参数typenamevalue
      <!--调用宏-->
      <p>用户名:{
        { input('username') }}</p>
      <p>密码:{
        { input('password', type='password') }}</p>
    
  • HTML 模板可以使用自动转义来防止 XSS 来自不信任的用户输入。

    • XSS 攻击 - 跨站脚本攻击,攻击者恶意制造的网页程序。通常指利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行。
  • 沙箱可以安全地呈现不受信任的模板。

  • AsyncIO(异步IO) 支持生成模板和调用异步函数。

  • I18N 支持 Babel。

  • 模板即时编译为优化的 Python 代码并缓存,或者可以提前编译。

  • 异常指向模板中的正确行以使调试更容易。

  • 可扩展的过滤器、测试、函数、甚至语法。

Jinja的理念

如果可能的话,应用程序的逻辑属于 Python,但它不应该因为过多地限制功能而使得模板设计者的工作变得困难。

Jinja2使用

继承

模板文件 model.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值