返回顶部
首页 > 资讯 > 后端开发 > Python >Python模板的使用详细讲解
  • 353
分享到

Python模板的使用详细讲解

2024-04-02 19:04:59 353人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一 模板语法传值二 过滤器三 标签四 自定义模板标签和过滤器4.1 自定义过滤器4.2 自定义标签函数4.3 自定义inclusion_tag五 模板的继承六 模板的导入一 模板

一 模板语法传值

方式一:

# urls.py
path('template', views.template)
# views.py
def template(request):
    name = "jasper"
    age = "18"
    return render(request, 'template.html', {"name": name, "age": age})

 <p>姓名:{{ name }}  年龄:{{ age }}</p>

方式二:关键字locals

def template(request):
    name = "jasper"
    age = "18"
    return render(request, 'template.html', locals())

传值范围:

  • 基本数据类型直接传递使用。
  • 函数名的传递会自动加括号执行并展示函数返回值(如果函数需要参数,则不会执行,也不会展示),模板语法不支持有参函数。
  • 类名的传递也会自动加括号产生对象。
  • 对象的传递则直接引用。

二 过滤器

add

{{ value|add:"2" }}

如果 value 是 4,那么输出将是 6。

这个过滤器将首先尝试将两个值强制转为整数。如果失败了,它将尝试将两个值加在一起。这对某些数据类型(字符串、列表等)有效,而对其他类型则失败。如果失败,结果将是一个空字符串。

capfirst

{{ value|capfirst }}

将值的第一个字符大写。如果第一个字符不是字母,这个过滤器就没有效果。

如果 value 是 “Django”,则输出为 “DjanGo”。

center

在给定宽度的字段中使数值居中。

"{{ value|center:"15" }}"

如果 value 是 “Django”,输出将是 " Django "。

cut

从给定的字符串中删除参数的所有值。

{{ value|cut:" " }}

如果 value 是 “String with spaces”,输出将是 “Stringwithspaces”。

date

根据给定的格式设置日期。

例子:

{{ value|date:"D d M Y" }}

如果 value 是一个 datetime 对象(例如,datetime.datetime.datetime.now() 的结果),输出将是字符串 ‘Wed 09 Jan 2008’。

传递的格式可以是预定义的 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATETIME_FORMAT, 或者是使用上表中显示的格式指定器的自定义格式。请注意,预定义的格式可能会根据当前的 locale 而有所不同。

假设 USE_L10N 为 True 和 LANGUAGE_CODE 为例如 “es”,那么对于:

{{ value|date:"SHORT_DATE_FORMAT" }}

输出将是字符串 “09/01/2008” (Django 自带的 “SHORT_DATE_FORMAT” 格式指定符是 “d/m/Y”)。

当不使用格式字符串时,使用 DATE_FORMAT 格式指定器。假设设置与前一个例子相同:

{{ value|date }}

输出 9 de Enero de 2008 (DATE_FORMAT’ 格式指定符为 r’j\d\e F\d\e Y’)。“d” 和 “e” 都是反斜杠,因为否则每一个都是一个格式字符串,分别显示日期和时区名称。

你可以将 date 与 time 过滤器结合起来,以呈现一个 datetime 值的完整表示。例如:

{{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

default

如果值为 False,则使用给定的默认值。否则,使用该值。 例子:

{{ value|default:"nothing" }}

如果 value 是 “” (空字符串),输出将是 nothing。

更多内置过滤器请查看官方文档:https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters

三 标签

参考官方文档:Https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters

四 自定义模板标签和过滤器

Django 模板语言包含了很多 内置 tags 和 filters,设计目的是满足应用需要占位逻辑需求。极少情况下,你可能发现需要的功能未被核心模板集覆盖。你能通过 python 代码自定义 tags 和 filters 扩展集成模板引擎,通过 {% load %} 标签使其可用。

该应用应包含一个 templatetags 目录,与 models.py, views.py 等同级。若该目录不存在,创建它——不要忘了用 init.py 文件确保目录被视作一个 Python 包。

自定义的 tags 和 filters 会保存在模块名为 templatetags 的目录内。模块文件的名字即稍候你用来加载 tags 的名字,所以小心不要采用一个可能与其它应用自定义的 tags 和 filters 冲突的名字。

为了使 {% load %} 标签生效,包含自定义标签的应用必须包含在 INSTALLED_APPS 中。这是个安全特性:它允许你在一个主机上持有多个模板库,而不是让每个 Django 安装都能访问所有的库。

我们并未限制放入 templatetags 包中的模块数量。只需牢记 {% load %} 语句会加载名字指定 Python 模块的 tags/filters,而不是应用。

要成为一个可用的 tag 库,模块必须包含一个名为 reGISter 的模块级变量,它是一个 template.Library 实例。所有的 tags 和 filters 均在其中注册。所以,在模块的开始,输入以下内容:

from django import template
register = template.Library()

4.1 自定义过滤器

@register.filter(name='myfilter')
def my_add(a, b):
    return a + b

4.2 自定义标签函数

@register.simple_tag(name='mt')
def func(a, b, c, d):
    return a + b + c + d

4.3 自定义inclusion_tag

@register.inclusion_tag(filename='it.html')
def index(n):
    html = []
    for i in range(n):
        html.append('第%s页'%i)
    return locals()

参考官方文档:https://docs.djangoproject.com/zh-hans/4.1/howto/custom-template-tags/

五 模板的继承

# 在html页面打上标记
{% block 名字 %}
    html标签
{% endblock %}

# 扩展html界面
{% extends 'html文件' %}

{% block 名字 %}
    html标签
{% endblock %}

# 一般情况下模板中至少应该有三个区域
CSSjs、content

子板中还可以使用母板的内容 {{ block.super }}

六 模板的导入

将html页面的某个部分当做模块的形式导入使用

{% include 'menu.html' %}

到此这篇关于Python模板的使用详细讲解的文章就介绍到这了,更多相关Python模板内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python模板的使用详细讲解

本文链接: https://lsjlt.com/news/120750.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python模板的使用详细讲解
    目录一 模板语法传值二 过滤器三 标签四 自定义模板标签和过滤器4.1 自定义过滤器4.2 自定义标签函数4.3 自定义inclusion_tag五 模板的继承六 模板的导入一 模板...
    99+
    2024-04-02
  • C++超详细讲解模板的使用
    目录一、函数模板1.1函数模板概念1.2 函数模板格式1.3 函数模板的原理1.4 函数模板的实例化二、类模板2.1 类模板的定义格式2.2类模板的实例化总结一、函数模板 1.1函数...
    99+
    2024-04-02
  • C++类模板与函数模板基础详细讲解
    目录函数模板类模板总结函数模板 当我们想要定义一个可以支持泛型的函数时,就要采用函数模板的方式了。所谓泛型就是可以支持多种类型的操作,比如我们定义一个compare操作,他可以根据传...
    99+
    2022-11-13
    C++类模板 C++函数模板
  • Python模块介绍与使用详细讲解
    目录模块的相关概念 1. 什么是模块2. 使用模块的好处模块的使用1. 自定义模块a) 方法一: 导入模块:b) 方法二c) 导入自己的模块Python中的包 1...
    99+
    2024-04-02
  • Python hashlib模块详细讲解使用方法
    目录1.hashlib的简介2.hashlib的使用1. 常用属性2. 常用方法3. 使用示例3.hashlib的特点4.实际演示1. 基本演示2. 应用场景案例1.hashlib的...
    99+
    2022-11-13
    Python hashlib模块 Python hashlib
  • SpringBoot超详细讲解Thymeleaf模板引擎
    Jsp是最早的模板技术,用来处理视图层的,用来做数据显示的模板 B S结构: B:浏览器:用来显示数据,发送请求,没有处理能力 发送一个请求,访问a.jsp,a.jsp在服务器端变...
    99+
    2024-04-02
  • python random模块的详细讲解
    1.random()方法random.random()方法返回的是[0,1)之间的浮点数 >>> import random c = random.random()print c 0.311067669783 ...
    99+
    2023-01-31
    模块 详细 python
  • C++模板非类型形参的详细讲解
    前言 关于模板的非类型形参,网上有很多内容,C++primer只有大概一页的阐述,但是都不够清晰详细。下面我尽可能从自己的角度去给大家描述一下非类型形参的相关细节。如果想进一步理解非...
    99+
    2024-04-02
  • C++模板的特化超详细精讲
    目录一、泛型编程二、函数模板2.1、函数模板的概念2.2、函数模板的格式2.3、函数模板的原理2.4、函数模板的实例化2.4.1、隐式实例化2.4.2、显示实例化三、类模板3.1、类...
    99+
    2022-11-13
    C++ 模板特化 C++ 模板函数特化
  • Python超详细讲解元类的使用
    目录类的定义一、什么是元类二、注意区分元类和继承的基类三、type 元类的使用四、自定义元类的使用类的定义 对象是通过类创建的,如下面的代码: # object 为顶层基类 clas...
    99+
    2024-04-02
  • Python中turtle绘图模块的详细讲解
    目录前言turtle基本概念调出模块引用turtle模块(库)方法例、写字函数write()的使用使用Python的turtle(海龟)模块画图步骤总结前言 turtle库是Pyth...
    99+
    2024-04-02
  • SpringCloudOpenFeign超详细讲解模板化远程通信的实现
    目录1. openFeign实现1.1 pom依赖1.2 yaml配置1.3 客户端调用代码1.4.服务端暴露接口1.5.测试日志1. openFeign实现 基于spring-bo...
    99+
    2024-04-02
  • Express使用html模板的详细代码
    express默认使用jade模板,可以配置让其支持使用ejs或html模板。 1. 安装ejs 在项目根目录安装ejs. npm install ejs 2、引入ejs var ...
    99+
    2022-06-04
    模板 代码 详细
  • Pythonthreading模块中lock与Rlock的使用详细讲解
    目录前言1、Lock(互斥锁)2、RLock(可重入锁)前言 在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临...
    99+
    2024-04-02
  • VueMVVM模型超详细讲解
    目录理解MVVM模型什么是 MVVM 模型MVVM的组成部分Vue中的实现MVVM模型在Vue中的应用理解MVVM模型 我们知道每一个 Vue 应用都是从创建一个新的实例开始的,根据...
    99+
    2022-11-13
    Vue MVVM模型 Vue MVVM框架
  • ReactRenderProps模式超详细讲解
    目录正文使用Render Props来完成关注点分离render prop的prop名不一定叫render注意点render prop是一个技术概念。它指的是使用值为function...
    99+
    2022-11-16
    React RenderProps React RenderProps模式
  • C++BoostTokenizer使用详细讲解
    目录介绍示例一示例二示例三示例四示例五示例六示例七介绍 库 Boost.Tokenizer 允许您通过将某些字符解释为分隔符来迭代字符串中的部分表达式。使用 boost::token...
    99+
    2022-11-16
    C++ Boost Tokenizer C++ Boost Tokenizer功能与使用
  • C++详细讲解互斥量与lock_guard类模板及死锁
    目录互斥量的基本概念互斥量的使用lock_guard类模板死锁lock与lock_guard的使用保护共享数据,操作时,用代码把共享数据锁住、操作数据、解锁 其他想操作共享数据的线程...
    99+
    2024-04-02
  • Python字典的详细讲解
    本篇内容介绍了“Python字典的详细讲解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、字典概述1. 字典的格式Python字典是一种可...
    99+
    2023-06-16
  • Python多线程使用方法详细讲解
    目录一、简介二、线程模块三、使用 threading 模块创建线程四、线程同步五、线程优先级队列( Queue)1、queue队列2、队列queue公共方法3、其他六、Queue详细...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作