Python模板的使用详细讲解
作者:许小许520 发布时间:2022-03-20 13:24:08
一 模板语法传值
方式一:
# 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 %}# 一般情况下模板中至少应该有三个区域
css、js、content
子板中还可以使用母板的内容 {{ block.super }}
六 模板的导入
将html页面的某个部分当做模块的形式导入使用
{% include 'menu.html' %}
来源:https://blog.csdn.net/weixin_68531269/article/details/126668940
猜你喜欢
- 1.依次安装python2和python3,并添加到系统环境变量中2.找到python3的安装目录,一般在C:\Users\Administ
- 代码如下:<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"
- <script>var d = '2013-07-21';var nd = d.replace(new RegE
- FSO中除了可以对驱动器、文件夹的操作以外,功能最强大的就是对文件的操作了。它可以用来记数、内容管理、搜索还可生成动态HTML页面等等。一、
- 一、配置webdriver下载谷歌浏览器驱动,并配置好import timeimport randomfrom PIL import Ima
- 我们知道深度神经网络的本质是输入端数据和输出端数据的一种高维非线性拟合,如何更好的理解它,下面尝试拟合一个正弦函数,本文可以通过简单设置节点
- 在php中实现验证码还是很方便的,关键点在于掌握php gd库与session的用法。纵观网上php 生成验证码的例子,无不是php gd库
- Cookie 模块,顾名思义,就是用来操作Cookie的模块。Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保
- 需求:1.用户输入密码正确登录2.用户输入密码错误退出并调用函数继续输入3.用户输入密码符合原先给定的一个值时,允许用户重置密码,并且可以用
- 今天看了篇关于Web Form Design的成功案例,虽然讲的事情很简单,但总结了一些方法,翻译过来做个原始积累吧,以后写东西举例子时也好
- 这章是结合之前学习的Tensforboard与Transforms的一个练习。直接上代码:from PIL import Imagefrom
- 分析在Python中,字符串是不可变的。所以无法直接删除字符串之间的特定字符。所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列
- 有的bug,莫名其妙就好了…python3.9 报错 “AttributeError: 'HTMLParser' objec
- 光线追迹得益于计算机的计算的能力,通过追踪具有代表性的光线的传播轨迹,可以更加精确地描述光学系统的性能,光线追迹方法也因此大展其能,诸如Ze
- 用Python实现学生信息管理系统,供大家参考,具体内容如下系统功能有:1.录入,查找,删除,修改学生信息2.学生成绩排名3.显示全部学生信
- 在新建数据库或附加数据库后,想添加关系表,结果出现下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使
- 本文实例讲述了python实现获取序列中最小的几个元素。分享给大家供大家参考。具体方法如下:import heapq import rand
- 一.filter函数简介filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tu
- 源码:#路飞骷髅import turtle as t#黄底帽子t.pu()t.goto(0,200)t.circle(-130,-80)t.
- 这篇文章主要介绍了Python遍历字典方式就实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友