• 售前

  • 售后

热门帖子
入门百科

python jinja2模板的利用示例

[复制链接]
后会无期846 显示全部楼层 发表于 2021-10-26 13:18:24 |阅读模式 打印 上一主题 下一主题
目次


  • 模板的用处
  • 模板语法
  • 继续和super函数
  • 利用jinja2 举行渲染

模板的用处


jinja2 可以用来修改设置文件,把设置文件的关键地方可以用变量来举行更换

模板语法


模板语法和django的模板语法差不多 在jinja2中,存在三种语法:
      
  • 控制结构{% %}  
  • 变量取值{{ }}  
  • 解释{# #}  
  • for 循环
  1. {% for user in users %}
  2. {{user.username}}
  3. {% endfor %}
复制代码
迭代字典
  1. {% for key,value in my_dict.iteritems() %}
  2. {{ key }}
  3. {{ value }}
  4. {% endfor %}
复制代码
过滤器
常用的过滤器有:
      
  • safe: 渲染时值不转义  
  • capitialize: 把值的首字母转换成大写,其他子母转换为小写  
  • lower: 把值转换成小写形式  
  • upper: 把值转换成大写形式  
  • title: 把值中每个单词的首字母都转换成大写  
  • trim: 把值的首尾空格去掉  
  • striptags: 渲染之前把值中全部的HTML标签都删掉  
  • join: 拼接多个值为字符串  
  • replace: 更换字符串的值  
  • round: 默认对数字举行四舍五入,也可以用参数举行控制  
  • int: 把值转换成整型
  1. {{ 'abc' | catialize }}
  2. # Abc
复制代码
继续和super函数
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   {% block head %}
  5.   <link rel="stylesheet" href="style.css" rel="external nofollow" />
  6.   <title>{% block title %}{% endblock %} - My Webpage</title>
  7.   {% endblock %}
  8. </head>
  9. <body>
  10. <div id="content">{% block content %}{% endblock %}</div>
  11. <div id="footer">
  12.   {% block footer %}
  13.   <script>This is javascript code </script>
  14.   {% endblock %}
  15. </div>
  16. </body>
  17. </html>
复制代码
  1. {% extend "base.html" %}    # 继承base.html文件
  2. {% block title %} Dachenzi {% endblock %}  # 定制title部分的内容
  3. {% block head %}
  4.   {{ super() }}    # 用于获取原有的信息
  5.   <style type='text/css'>
  6.   .important { color: #FFFFFF }
  7.   </style>
  8. {% endblock %}  
  9. # 其他不修改的原封不动的继承
复制代码
利用jinja2 举行渲染


jinja2 模块中有一个名为Enviroment的类,这个类的实例用于存储设置和全局对象,然后从文件系统或其他位置中加载模板
1.根本利用方法
      
  • PackageLoader: 包加载器  
  • FileSystemLoader: 文件系统加载器
2.PackageLoader
利用包加载器来加载文档的最简单方式如下:
  1. from jinja2 import PackageLoader, Environment
  2. env = Environment(loader=PackageLoader('python_project', 'templates')) # 创建一个包加载器对象
  3. template = env.get_template("base.html") # 获取一个模板文件
  4. template.render(name="daxin", age=18)
复制代码
      
  • PackageLoader()两个测试为:python包的名称,以及模板目次名称  
  • get_template(): 获取模板目次下的某个具体文件  
  • render(): 担当变量,对模板举行渲染
3.FileSystemLoader
文件系统加载器,不必要模板文件存在某个Python包下,可以直接访问系统中的文件
  1. import os
  2. from jinja2 import PackageLoader, Environment, FileSystemLoader
  3. path_dir = "/mnt/e/files"
  4. loader = FileSystemLoader(searchpath=path_dir)
  5. env = Environment(loader=loader)
  6. template = env.get_template("index.opf") # 模板文件
  7. buf = template.render(name="daxin", age=18)
  8. with open(os.path.join("path_dir", "index.opf"), "w" ) as fp:
  9.   fp.write(buf)
复制代码
      
  • FileSystemLoader(): searchpath参数后面跟的是文件地点的目次  
  • get_template(): 获取模板目次下的某个具体文件  
  • render() 担当变量,对模板举行渲染  
  • 渲染后的内容可以生存到设置文件中
以上就是python jinja2模板的利用示例的详细内容,更多关于python jinja2模板的资料请关注脚本之家其它相干文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作