Django07:模板语法/标签/inclusion_tag/模版的继承

模板语法传值

列表:l=['a','b','c']

集合:se{‘a’,'yy','ss'}

元组:t=(111,222,333)

render(request.'index,html',locals())

语法规律

{{}}:变量相关

{%%}:逻辑相关

{{func}}

会自动加括号执行,但不支持带参数;

带参数会不执行

{{my_class}}

会自动加括号执行(实例化)

总结:内部会判断当前变量名是否可以加括号调用,如果可以就执行。针对函数名和类名

模板语法取值

d.hobby.3.info

1. 只能使用句点取值“.”, 可以混合使用。

2.“3”是索引,第三个的。

过滤器(最多两个参数)

过滤器的语法: {{ value|filter_name:参数 }}

default

如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。

{{ value|default:"nothing"}}

如果value没有传值或者值为空的话就显示nothing

length

返回值的长度,作用于字符串和列表。

{{ value|length }}

返回value的长度,如 value=['a', 'b', 'c', 'd']的话,就显示4.

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB''4.1 MB''102 bytes', 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB。

slice

切片

{{value|slice:"2:-1"}}

date

格式化

{{ value|date:"Y-m-d H:i:s"}}

safe

比如:

value = "<a href='#'>点我</a>"

{{ value|safe}}

truncatechars

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

参数:截断的字符数

{{ value|truncatechars:9}}

truncatewords

在一定数量的字后截断字符串。

{{ value|truncatewords:9}}

cut

移除value中所有的与给出的变量相同的字符串

{{ value|cut:' ' }}

如果value为'i love you',那么将输出'iloveyou'.

join

使用字符串连接列表,例如Python的str.join(list)

标签

就是逻辑

for

#for
{% for user in user_list %}<li>{{ user.name }}</li>
{% endfor %}

for循环可用的一些参数:

VariableDescription
forloop.counter当前循环的索引值(从1开始)
forloop.counter0当前循环的索引值(从0开始)
forloop.revcounter当前循环的倒序索引值(从1开始)
forloop.revcounter0当前循环的倒序索引值(从0开始)
forloop.first当前循环是不是第一次循环(布尔值)
forloop.last当前循环是不是最后一次循环(布尔值)
forloop.parentloop本层循环的外层循环

for ... empty

对象是空,无法循环

{% for user in user_list %}<li>{{ user.name }}</li>
{% empty %}<li>空空如也</li>
{% endfor %}

if判断

if,elif和else

{% if user_list|length > 5 %}七座豪华SUV
{% else %}黄包车
{% endif %}
{% if user_list %}用户人数:{{ user_list|length }}
{% elif black_list %}黑名单数:{{ black_list|length }}
{% else %}没有用户
{% endif %}

with

定义一个中间变量,多用于给一个复杂的变量起别名。

注意等号左右不要加空格。

#方法一
{% with business.employees.count as total %}{{ total }} employee{{ total|pluralize }}
{% endwith %}#方法二
{% with total=business.employees.count %}{{ total }} employee{{ total|pluralize }}
{% endwith %}

自定义过滤器、标签

先三步走

1. 在应用下创建一个名字 “必须” 教templatetags文件夹

2. 在该文件夹内创建 “任意” 名称的py文件 eg : mytag.py

3. 在该py文件内 “必须” 先书写下面两句话

from django import template
register = template.Library()

例子:

py文件:

from django import template
register = template.Library()#自定义过滤器,参数最多2个
@register.filter(name="cut")
def cut(value, arg):return value.replace(arg, "")@register.filter(name="addSB")
def add_sb(value):return "{} SB".format(value)#自定义标签,可以多个参数@register.simple_tag(name="plus")
def index(a,b,c,d):return '%s-%s-%s-%s'%{a,b,c,d}

html文件:

#自定义过滤器
{# 先导入我们自定义filter那个文件 #}
{% load app01_filters %}{# 使用我们自定义的filter #}
{{ somevariable|cut:"0" }}
{{ d.name|addSB }}#自定义标签,多个参数之间,用空格隔开
{% plus 'jason' 123 123 123 %}

inclusion_tag

"""
步骤1.在应用下创建一个名字必须为templatetags文件夹2.在该文件夹内,创建一个任意名称的py文件3.在py文件内固定写两行代码from django import templateregister = template.Library()"""

当HTML页面某一个地方的页面需要传参数才能动态的渲染出来,

并且在多个页面都需要使用该局部,那么就考虑将该局部页面做成inclusion_tag形式。

templatetags/my_inclusion.py

from django import templateregister = template.Library()@register.inclusion_tag('result.html')
def show_results(n):n = 1 if n < 1 else int(n)data = ["第{}项".format(i) for i in range(1, n+1)]return {"data": data}#第二种return locals()

templates/snippets/result.html

<ul>{% for choice in data %}<li>{{ choice }}</li>{% endfor %}
</ul>

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>inclusion_tag test</title>
</head>
<body>{% load inclusion_tag_test %}{% show_results 10 %}
</body>
</html>

模版的继承

note:所有模版,在后台渲染后,返回前端。

在子页面中

{% extends 'layouts.html' %}

块(block)

通过在母板中使用{% block  xxx %}来定义"块"

在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

{% block page-main %}<p>世情薄</p><p>人情恶</p><p>雨送黄昏花易落</p>
{% endblock %}

模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Title</title>{% block page-css %}{% endblock %}
</head>
<body><h1>这是母板的标题</h1>{% block page-main %}{% endblock %}
<h1>母板底部内容</h1>
{% block page-js %}{% endblock %}
</body>
</html>

规律:一般模板内至少应该有三块区域

css

html

js

补充:

使用模板的内容

{{block.supper}}

模板导入

页面某个局部全部导入

{% include 'navbar.html' %}

引用:Django模板语言相关内容 - Q1mi - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红象云腾发布新一代PB级高速大数据平台产品

ZD至顶网服务器频道 03月23日 新闻消息&#xff1a;在3月19日举办的China Hadoop Summit&#xff08;中国Hadoop技术峰会&#xff09;上&#xff0c;中国Hadoop大数据厂商红象云腾与OpenPOWER基金会共同发布红象云腾的新一代大数据产品,帮助企业高速处理PB规模数据。 此次发布…

个人笔记 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

为什么80%的码农都做不了架构师&#xff1f;>>> 模板创建项目 模板地址 更新package.json中的dependencies依赖到最新版本 当新建一个项目的时候&#xff0c;从其他项目的package.json里面copy一份dependencies过来。 但因为是新项目&#xff0c;我们想用各个依赖包…

dotnet-exec 0.12.0 released

dotnet-exec 0.12.0 releasedIntrodotnet-exec 是一个 C# 程序的小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;让 C# 像 python/nodejs 一样简单&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法。Install/Upd…

美国用户现在可以下载其所有Apple帐户数据,这是操作方法

Starting today, Apple is allowing all US users to download a copy of every last bit of their data from the company. 从今天开始&#xff0c;Apple允许所有美国用户从该公司下载其数据的最后一部分的副本。 This feature has been available for EU users since May, th…

java 的原码、补码、反码小总结

先看一个代码吧: int h; return (key null) ? 0 : (h key.hashCode()) ^ (h >>> 16); 这个应该很熟悉吧,是 java 里 HashMap 的计算 hash 值的方法.这里有一个运算符 "^"&#xff0c;他其实就是使用补码来运算的.好了&#xff0c;那么我们下面来说说这些…

Django08:模型层(ORM)--测试脚本/必知的13条/神器的双下划线查询/多表操作

单表操作 django 自带的sqlite3数据库对日期格式不是很敏感&#xff0c;处理的时候容易出错。 测试脚本 测试环境准备&#xff1a;去manage.py 中拷贝钱四行代码&#xff0c;然后自己手写两行。 脚本无论在引用下面&#xff0c;还是单独开设PY文件都可以。 import os impor…

“互联网+”促传统企业三大转型

2015年是传统行业互联网化的元年。国家提出要制定“互联网”行动计划后&#xff0c;互联网旅游、互联网汽车、互联网三农、互联网物流、互联网医疗等开始起步。同时&#xff0c;面对不确定的移动互联网时代&#xff0c;互联网某些技术和模式还在进化、演变之中&#xff0c;每一…

开发高性能ASP.NET应用

本文是“.NET Conf China 2022”上我的一个分享&#xff0c;这里更细化的分享出来。分享分为四个部分&#xff1a;制定指示设计应用正确测试性能优化高性能&#xff1a;不一定是架构出来的&#xff0c;但一定是优化出来的。制定指标-收集首先把项目中的热路径API和核心API找出来…

Ethereum-EIPs

What is an EIP? Ethereum Improvement Proposal 以太坊改进建议的文档 这个文档向Ethereum社区提供信息&#xff0c;为Ethereum、Ethereum的进程、环境描述一个新特征&#xff0c;该EIP应当为该特征提供一个基本的技术描述和原理原理。该EIP作者有责任在社区和不同意见的文档…

Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化

聚合查询 单独使用时&#xff0c;用aggregate 1.只要是跟数据库相关的模块 基本都在django.db.models里面 如果没有应该在django.db里面 2. 聚合查询通常配合分组使用 from django.db.models import Avg, Sum, Max, Min, Count# 1.所有书的平均价格 resmodels.Book.objects.…

记事本状态栏不会自动_如何在记事本中同时启用状态栏和自动换行

记事本状态栏不会自动The status bar in Windows’ Notepad displays the current line number and column number of the cursor location. However, if you find that the Status Bar option on the View menu is grayed out, it may be because you have Word Wrap enabled…

洛谷P2587 [ZJOI2008] 泡泡堂

题目传送门 分析&#xff1a;一道策略游戏题&#xff0c;要求最大期望得分和最小期望得分。首先分析最大&#xff0c;很显然是可以用一种类似于田忌赛马的思维来做&#xff0c;将两队的实力按照从大到小&#xff08;其实从小到大也可以&#xff09;排序&#xff0c;然后就按照顺…

极端高温导致澳大利亚断网

&#xfeff;西澳大利亚首府珀斯因恶劣天气出现了网络连接问题&#xff0c; 网络故障不是由于暴风雨或闪电引起的&#xff0c;而是极端高温。本周一是珀斯有记录以来第六热的天&#xff0c;当天最高温度达到了44.4℃。因为创纪录的高温&#xff0c;澳大利亚宽带 服务商iiNet在当…

推荐一款采用 .NET 编写的 反编译到源码工具 Reko

今天给大家介绍的是一款名叫Reko的开源反编译工具&#xff0c;该工具采用C#开发&#xff0c;广大研究人员可利用Reko来对机器码进行反编译处理。我们知道.NET 7 有了NativeAOT 的支持&#xff0c;采用NativeAOT 编译的.NET程序 无法通过ILSpy 之类的传统工具得到源码&#xff0…

并行传输数据和串行传输数据_为什么串行数据传输比并行数据传输快?

并行传输数据和串行传输数据SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why wouldn’t the parallel transmission be faster? SATA硬盘驱动…

得到某月的天数

Calendar timeCalendar.getInstance(); time.clear(); time.set(Calendar.YEAR,2018);//year年 time.set(Calendar.MONTH,1);//Calendar对象默认一月为0,month月 int daytime.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 System.out.pri…

Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式

图书管理系统笔记 redirect括号内可以直接写url 也可以直接写别名 但如果别名需要参数&#xff0c;必须使用reverse解析。 choices用法 使用场景&#xff1a;能列举完全的数据 #使用方法&#xff1a;xxx_choice #1. get.xxx_display #2. 如果超出范围&#xff0c;则显示原…

业务处理速度变慢?且看IT如何成为救世主

在日常生活的方方面面&#xff0c;我们似乎都在期待着一种即时的便利。比如&#xff0c;用手机购物、订餐、缴费、预约挂号等等。而在企业中&#xff0c;时间与效率可不是一种休闲福利&#xff0c;而是一项重要的商业功能。我们有理由期待&#xff0c;当今史无前例的数字革命正…

微软让卡塔尔世界杯踏入元宇宙

遵守前一篇公众号文章里的承诺&#xff0c;昨天盆盆在视频号里录制了一段5分钟左右的短视频&#xff0c;讲了江森自控和微软Azure&#xff0c;如何帮助卡塔尔世界杯打造基于元宇宙的数字体育馆。Part.1欢迎扫码关注我的视频号(每天更新元宇宙、云计算和数字化的短视频)。Part.2…

洛谷——P1305 新二叉树(新建二叉树以及遍历)

题目描述输入一串二叉树&#xff0c;用遍历前序打出。 输入输出格式输入格式&#xff1a; 第一行为二叉树的节点数n。(n \leq 26n≤26) 后面n行&#xff0c;每一个字母为节点&#xff0c;后两个字母分别为其左右儿子。 空节点用*表示 输出格式&#xff1a; 前序排列的二叉树 输…