Python(Web时代)——jinja2模板

这篇具有很好参考价值的文章主要介绍了Python(Web时代)——jinja2模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Jinja2是Flask框架默认支持的模板引擎,是python的web项目中被广泛应用的一种模板引擎,jinja2的作者与Flask是同一个人。

jinja2具有以下特点:

  • 非常灵活,提供了控制结构、表达式与继承等

  • 性能好

  • 可读性强

渲染一个模板,通过render_template方法即可

语法

引入渲染函数

使用之前需要先通过import 导入

from flask import render_template

注:要将模板文件放置在项目根目录的 templates文件夹中

在Jinja2中,存在三种语法

  • 变量取值 {{ }}

  • 控制结构(逻辑代码) {% %}

  • 注释 {# #}

示例1:变量取值 {{ }}

@app.route("/tmp")
def template_test():
    name = "我是字符串"
    num =1
    mylist = [1,2,3,4]
    mydict={"name":"张三","age":33}
    mytuple = (1,2,3,4)

    return render_template("template.html",name=name,num=num,mylist=mylist,mydict=mydict,mytuple=mytuple)
 

template.html 模板文件 

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    <p>字符串:{{ name }}</p>
    <p>数字:{{ num }}</p>
    <p>列表:{{ mylist }}</p>
    <p>列表中的第二个元素:{{ mylist[1] }}</p>
    <p>字典:{{ mydict }}</p>
    <p>字典的name:{{ mydict['name'] }}</p>
    <p>元组:{{ mytuple }}</p>
    <p>元组的第2个元素:{{ mytuple[1] }}</p>
</body>
</html>
 

调用结果

jinja2,python,python,前端,开发语言

示例2:控制结构 {% %}

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    <p>字符串:{{ name }}</p>
    <p>数字:{{ num }}</p>
    <p>列表:{{ mylist }}</p>
    <p>列表中的第二个元素:{{ mylist[1] }}</p>
    <p>字典:{{ mydict }}</p>
    <p>字典的name:{{ mydict['name'] }}</p>
    <p>元组:{{ mytuple }}</p>
    <p>元组的第2个元素:{{ mytuple[1] }}</p>

    {% if name=='张三' %}
        条件满足,我是张三
    {% else %}
        条件不满足
    {% endif %}

    循环列表数据:
    {% for i in mylist %}
        {{ i }}
    {% endfor %}
</body>
</html>
 

调用结果

jinja2,python,python,前端,开发语言

示例3:注释 {# #}

{# 循环列表数据:#}
{% for i in mylist %}
    {{ i }}
{% endfor %}

过滤器

有些时候需要对要在模板中的变量值做一些特殊处理,比如首字母大写,去掉前后空格、字符串拼接等等,这时就可以使用过滤器。

过滤器的使用

通过  |  来使用过滤器,与Linux中的管道类似

例如,将字符串的首字母大写

<p>{{ name | capitalize }}</p>

常用的过滤器

过滤器 说明
safe 渲染时值不转义
capitalize 首字母大写,其他字母小写
lower 所有字母小写
upper 所有字母大写
title 值中每个单词首字母大写
trim 去除首尾空格
striptags 渲染时删除掉值中所有HTML标签
  join 拼接字符串
  replace 替换字符串中的值
  round 对数据进行四舍五入

示例代码

@app.route("/tmp2")
def template_test2():
    name = "harRY"
    return render_template("template2.html",name=name)
 


template2.html

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    {# 首字母大写 #}
    <p>{{ name | capitalize }}</p>
    {# 单词全小写 #}
    <p>{{ "Hello World!" | lower }}</p>
    {# 去除首尾空格 #}
    <p>{{ " Hello World!  " | trim }}</p>
    {# 四舍五入取整 #}
    <p>{{ 1.26 | round }}</p>
    {# 四舍五入保留2位小数取整 #}
    <p>{{ 1.2666 | round(2) }}</p>
</body>
</html>
 

调用

jinja2,python,python,前端,开发语言

自定义过滤器

当遇到现有的过滤无法满足我们的需求时,这时就需要我们自定义一个过滤器了

自定义过滤器有两种方式

方式1:@app.template_filter()

# 第一种方式,用作计算字符串长度
@app.template_filter()
def str_len(args):
    return len(args)
 

方式2: 先定义方法,后采用 app.jinja_env.filters

# 第二种方式, 去除字符串中的空格
def replace_space(args):
    return args.replace(" ", "")

app.jinja_env.filters['replace_space'] = replace_space
 

使用以上自定义的过滤器

@app.route("/tmp3")
def template_test3():
    name = "harRY"
    aaa="dfs jklf  jffff  "
    return render_template("template3.html", name=name,aaa=aaa)
 

template3.html

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    <p>{{ name | str_len }}</p>
    <p>{{ aaa | replace_space }}</p>
</body>
</html>
 

输出

jinja2,python,python,前端,开发语言

程序猿与投资生活实录已改名为  程序猿知秋,WX 公众号同款,欢迎关注!! 文章来源地址https://www.toymoban.com/news/detail-766324.html

到了这里,关于Python(Web时代)——jinja2模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask 使用Jinja2模板引擎

    Jinja2,由Flask框架的创作者开发,是一款功能丰富的模板引擎,以其完整的Unicode支持、灵活性、高效性和安全性而备受推崇。最初受Django模板引擎启发,Jinja2为Flask提供了强大的模板支持,后来也成为其他项目的首选。在本文中,我们将深入探讨Jinja2的特性、语法以及如何在

    2024年02月05日
    浏览(33)
  • Ansible基础6——文件模块、jinja2模板

    模块名称 释义 blockinfile 插入、更新或删除由可自定义标记线包围的多行文本块 copy 将文件从本地或远程计算机复制到受管主机上的某个位置。类似于file模块,copy模块还可以设置文件属性,包括SELinux上下文件。 fetch 此模块的作用和copy模块类似,但以相反方式工作。此模块用

    2024年02月07日
    浏览(31)
  • 带你了解关于FastAPI快速开发Web API项目中的模板和Jinja

    摘要: FastAPI 实际上是为构建 API 和微服务而设计的。它可用于构建使用 Jinja 提供 HTML 服务的 Web 应用程序。 本文分享自华为云社区《FastAPI 快速开发 Web API 项目: 模板和 Jinja 介绍》,作者:宇宙之一粟。 模板是全栈 Web 开发的重要组成部分。使用 Jinja,您可以构建丰富的模

    2023年04月25日
    浏览(27)
  • 解决flask中jinja2插值变量变成字符串的办法

    今天在通过使用{{ variable_name }}这种方式插入html内容时,发现变量内容到了页面中全部变成了字符串, python代码: html代码中插入: 结果这在页面中都变成了类似下图的字符串,并没有渲染 应当在html代码中加入safe告诉引擎不要转义: 之后内容就可以正常被渲染而非显示字符

    2024年01月18日
    浏览(26)
  • ImportError: cannot import name ‘escape‘ from ‘jinja2‘

    使用flask时,导入jinja2报错如下: 然后在必应bing搜索现实jinja2版本应该小于3.1.0 之后在所用环境查看jinja2版本为3.1.2,所以jinja2版本应降到3.1.0一下,之后我把版本改为3.0.2。 但是导入发现依旧报错,然后仔细看了下报错原因。发现所用的环境是AppData下的,于是又把系统的环境

    2024年02月16日
    浏览(40)
  • cannot import name Markup from jinja2解决方案

    将代码改一下,  代码如下:  运行结果:

    2024年02月11日
    浏览(29)
  • 解决 ImportError: cannot import name ‘contextfilter‘ from ‘jinja2‘

    升级 jupyterhub -i 就是选择镜像源,不然更新很慢。 如果是conda环境,运行以下命令 国内镜像: 更新pip

    2024年02月12日
    浏览(37)
  • Python中的Web前端开发技术与实践

    Python是一种广泛使用的编程语言,可以用于Web开发。在Python中进行Web前端开发,可以使用多种技术和框架。以下是一些常用的技术和框架: Django:Django是一个高级Python Web框架,它鼓励快速开发和干净的设计。Django包括一个完整的开发工具集,包括模板引擎、表单处理、认证

    2024年01月24日
    浏览(35)
  • Python应用-web应用开发(上)前端part

    版权声明:转载请联系我获得授权 参考视频:Python的web开发全家桶 参考学习曲线:Python入门技能树 在网页右键点检查可查看源码 选中点击想要的区域可以得到对应源码区域 styles中为样式定义 咱们网站与别人的不一样: Flask框架为了让咱们写标签方便,支持将字符串写入到

    2024年02月04日
    浏览(30)
  • 【100天精通python】Day47:python网络编程_Web开发:web服务器,前端基础以及静态服务器

    目录 1  网络编程与web编程 1.1 网络编程 1.2 web编程  1.3 前后端交互的基本原理/

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包