Django模版层

news2024/9/20 18:46:08
解析:    
forloop内置对象:运行结果解析
'counter0': 从0开始计数    
'counter' : 从1开始计数    
 
'first': True,判断循环的开始
'last' : Tues,判断循环的结束

模版变量的书写

我们可以在html中编写python代码。

演示:

  {{ 填写变量 }}
  {% 填写类的 %}

{{ d.0 }}
{{ d.1 }}
{{ d.3 }}
{{ user_dict.hobby.2 }}
{{ index }}
{{ obj.score }}

过滤器(内置函数)

语法格式

{{ 变量名称|过滤器名称(函数名):变量 }}

过滤器功能示例
default如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。{{ value|default:"nothing"}}
length对于字符串列表这类有length属性的,得到其值{{ value|length}}
filesizeformat将传入的数字当做文件的字节数,将其处理成合适展示的文件大小,如2048就会展示为2 KB{{ value|filesizeformat }}
slice对字符串进行切片{{value|slice:"2:-1"}}
add将传入的数字或字符串做相加或拼接处理{{value|add:1}}
safe模板语法默认转义带html语法的文本,safe取消标签文本转义,让其可以被html渲染{{ value|safe}}
truncatechars如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。{{ value|truncatechars:9}}
truncatewords在一定数量的字后截断字符串,处理同上...。{{ value|truncatewords:9}}
cut移除value中所有的与给出的变量相同的字符串如果value为'i love you',那么将输出'iloveyou'.{{ value|cut:' ' }}
timesincedatetime数据距离现在的时间(从现在起){{ blog_date|timesince }}
timeuntildatetime数据距离现在的时间(到现在止){{ blog_date|timesince }}
datedatetime数据字符化输出{{ value|date:"Y-m-d H:i:s"}}

示例:

default

def func(request):
    a = True
    return render(request, 'func.html', locals())


    # 过滤器

    {{ a|default:'hello' }}

length

def func(request):
    a = True
    ll = [1, 2, 3, 4, 5]
    return render(request, 'func.html', locals())


#过滤器
{{ ll|length }}

filesizeformat

def func(request):

    size = 123456789
    return render(request, 'func.html', locals())

   # 过滤器
    
    {{ size|filesizeformat }}

slice

def func(request):

    user = 'helloworld'
    return render(request, 'func.html', locals())

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

date

def func(request):
 
    import datetime
    date_1 = datetime.datetime.now()
    return render(request, 'func.html', locals())

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

truncatechars

def func(request):
    
    res = 'ssahjkdhasjdhkashdjshadsjahs'
    return render(request, 'func.html', locals())

{{ res|truncatechars:6 }}

safe

def func(request):

    need = '<h1>标题</h1>'
    return render(request, 'func.html', locals())


    {{ need|safe }}

模版标签

定义:Django模版层的标签可以用来展示数据、控制流程、渲染HTML、处理表单等等

格式{% tag%}...标签内容...{% endtag%}

for标签

def login(request):
    user_dict = {'name': 'kk', 'age': 19, 'gender': 'male', 'salary': 22222}
    return render(request, 'login.html', locals())


{% for dict in user_dict %}
        <p>
        {{ forloop}}
        </p>
    {{ dict }}
{% endfor %}

解析:

解析:    
forloop内置对象:运行结果解析
'counter0': 从0开始计数    
'counter' : 从1开始计数    
 
'first': True,判断循环的开始
'last' : Tues,判断循环的结束

for循环

遍历(循环)字典里的数据

{% for key,val in user_dict.items %}
    <p>
    {{ key }}:{{ val }}
    </p>
{% endfor %}
{% for key in user_dict.keys %}
    {{ key }}

{% endfor %}

{% for val in user_dict.values %}
    {{ val }}

{% endfor %}

{% for item in user_dict.items %}
    <p>
    {{ item }}
    </p>

{% endfor %}

if标签

if标签支持的有:if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。

def login(request):

    num = 80
    return render(request, 'login.html', locals())


{% if num > 100 or num < 0 %}
    <p>分数无效</p>

{% elif num >= 90 and num <= 100 %}
    <p>棒</p>
{% elif num <= 90 and num >= 80 %}
    <p>还凑合</p>
{% elif num <= 80 and num >= 70 %}
    <p>一般</p>
{% else %}
    <p>太差了</p>
{% endif %}

演示for循环与if标签的混合使用

def login(request):

    l1 = [1, 2, 3, 4, 5]

    return render(request, 'login.html', locals())

{% for foo in l1 %}
    {% if forloop.first %}
        <p>第一个数:{{foo}}</p>
    {% elif forloop.last %}
        <p>最后一个数:{{ foo }}</p>
    {% else %}
        {{ foo }}
    {% endif %}


{% endfor %}

with


def login(request):
 
    d = {'name': 'kk', 'age': 19, 'gender': 'male', 'salary': 22222, 'love': ['football', 'singer', 'play_game']}
    return render(request, 'login.html', locals())

{% with d.love as ss %}
    <p>{{ ss }}</p>
    <p>{{ d.love}}</p>

{% endwith %}

自定义标签

1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.

2、在app中创建templatetags模块(模块名只能是templatetags

3、创建任意 .py 文件,如:my_tags.py

from django import template
from django.utils.safestring import mark_safe
 
register = template.Library()   #register的名字是固定的,不可改变
 
@register.filter
def filter_multi(v1,v2):
    return  v1 * v2
    
@register.simple_tag
def simple_tag_multi(v1,v2):
    return  v1 * v2
    
@register.simple_tag
def my_input(id,arg):
    result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
    return mark_safe(result)

模版的继承和导入

模板的继承

当我们多个页面有相似的页面,我们可以采用下列方法

1.我们直接复制粘贴>>>创建一个新的html

2.模板的继承

1.在模板中使用block划定子板>>方便以后修改的区域
	{% block 区域名称 %}
    {% endblock%}
2.子版继承母板
	{% extends 'home.html'%}
	{% block 区域名称 %}
    	子板自己的内容
    {% endblock%}
    
注意:子板也可以继续使用子模板的内容
	{{block.super}}

在原html中找到想要修改的区域,使用{%block%}之后把想要继承的区域放进去以{%endblock%}结尾

新建一个html文件后使用{% extends加上我们所继承html文件%}编写新建的样式等,之后使用endblock结尾,这样页面就修改完成了。

一个继承的html应该有三个区域:css区域,js区域,页面等例:{%block css%}就是写css的区域

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

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

相关文章

找风景视频素材,就上这5个网站。

找风景视频素材那一定要上这6个网站&#xff0c;免费下载&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&#xff0c;高清视频素材也很多&#xff0c;像风景…

C++: 模板初阶

文章目录 一. 泛型编程二. 函数模板函数模板的原理函数模板的实例化隐式实例化: 让编译器根据实参推演模板参数的实际类型显示实例化: 在函数名后的<>中制定模板参数的世纪类型 模板参数的匹配原则 三. 类模板类模板的定义格式类模板的实例化 一. 泛型编程 如何实现一个…

汽车FMCW毫米波雷达信号处理流程(推荐---基础详细---清楚的讲解了雷达的过程---强烈推荐)------假设每个Chirp采集M个样本点

毫米波雷达在进行多目标检测时,TX发射一个Chirp,在不同距离下RX会接收到多个反射Chirp信号(仅以单个chirp为例)。 雷达通过接收不同物体的发射信号,并转为IF信号,利用傅里叶变换将产生一个具有不同的分离峰值的频谱,每个峰值表示在特定距离处存在物体。 请问,这种多目标…

《持续交付:发布可靠软件的系统方法》- 读书笔记(十四)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十四&#xff09; 第 14 章 版本控制进阶14.1 引言14.2 版本控制的历史14.2.1 CVS14.2.2 SVN14.2.3 商业版本控制系统14.2.4 放弃悲观锁 14.3 分支与合并14.3.1 合并14.3.2 分支、流和持续集成 14.4 DVCS14.4.1 什么是 …

云课五分钟-04一段代码学习-大模型分析C++

前篇&#xff1a; 云课五分钟-03第一个开源游戏复现-贪吃蛇 经过01-03&#xff0c;基本了解云课最大的优势之一就是快速复现&#xff08;部署&#xff09;。 视频&#xff1a; 云课五分钟-04一段代码学习-大模型分析C AIGC大模型时代&#xff0c;学习编程语言的方式&#xf…

腾讯待办停止运营怎么办?导出的ics文件数据怎么打开查看

待办提醒类工具是日常办公及生活中必不可少的工具&#xff0c;使用待办提醒类工具可以记录很多容易忘记的事情&#xff0c;其可以帮助大家轻松管理各项事务和提高办事的效率。而随着工作的不断变动&#xff0c;大家选择待办提醒类工具也会不断的发生改变。 比如就拿我自己的使…

2023测试工程师做哪些准备,才能从众人中脱颖而出,不看后悔10年

最近&#xff0c;裁员的声音此起披伏。貌似我们只有努力奔跑&#xff0c;这一块带有命运诅咒的“石头”才不会轻易的落到我们的头上。 在不是金三银四、金九银十的求职旺季外&#xff0c;还会有机会吗&#xff1f;我想&#xff0c;对于有能力的人来说&#xff0c;任何时候都可…

(三)什么是Vite——Vite 主体流程(运行npm run dev后发生了什么?)

什么是vite系列目录: &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff08;冷启动&#xff09;-CSDN博客 &#xff08;三&#xff09;什么是Vite——Vite 主体流程(运行npm run dev…

慧眼APP开发项目

目录 第1章 项目概述... 3 第2章 可行性分析... 4 2.1 技术可行性... 4 2.2 数据可行性... 4 2.3 应用可行性... 4 第3章 环境搭建... 5 3.1 模型搭建... 5 3.1.1 安装PaddleDetection. 5 3.1.2 自定义数据集... 5 3.2 APP搭建... 5 3.2.1 安装Android Studio. 5 3.…

C++入门(1)—命名空间、缺省参数

目录 一、什么是C 1、C关键字(C98) 2、C兼容C 二、C程序预处理指令 三、命名空间 1、命名冲突 第一种&#xff1a; 第二种&#xff1a; 2、域作用限定符 3、实现命名空间 4、命名空间冲突 5、访问命名空间 6、命名空间“std” 四、输入输出 1、定义 2、自动识…

Python开源项目DifFace——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

无论是自己、家人或是朋友、客户的照片&#xff0c;免不了有些是黑白的、被污损的、模糊的&#xff0c;总想着修复一下。作为一个程序员 或者 程序员的家属&#xff0c;当然都有责任满足他们的需求、实现他们的想法。除了这个&#xff0c;学习了本文的成果&#xff0c;或许你还…

如何在面试中胜出?接口自动化面试题安排上

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

Godot4.1 GDExtension 配置VisualStudio方法梳理以及快捷配置工具

写在最前 本篇教程基于之前教程&#xff0c;并且默认为Windows10&#xff0c;64位&#xff0c;Godot版本4.1.3如果遇到任何问题&#xff0c;欢迎及时提出&#xff0c;如果配置成功了请点个赞&#xff0c;球球啦。 之前教程 https://blog.csdn.net/qq_31805591/article/detai…

天机学堂-1、项目搭建,微服务架构设计

1.学习背景 各位同学大家好&#xff0c;经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多&#xff0c;你的脑袋里也会有很多的问号&#xff1a; 微服务架构该如何拆分&#xff1f; 到了公司中我需要自…

8.查询数据

一、单表查询 MySQL从数据表中查询数据的基本语为SELECT语。SELECT语的基本格式是: SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator>…

Linux网络应用层协议之http/https

文章目录 目录 一、http协议 1.URL 2.http协议格式 3.http的方法 4.http的状态码 5.http常见header 6.实现一个http服务器 二、https协议 1.加密 2.为什么要加密 3.常见的加密方式 对称加密 非对称加密 4.https的工作过程探究 方案1 只使用对称加密 方案2 只使…

类似于推箱子的小游戏 寻找 最短路径

实现效果如下 类似 推箱子小游戏 的变种 C/C版本 BFS最短路径 黑色代表墙壁 不能越过 蓝色代表HOME点 灰色代表要找的小箱子 绿色代表路径 最终目标是将灰色的小箱子移动到蓝色的HOME点 需要两次搜索 第一次是 出发点到灰色小箱子 第二次是灰色小箱子到蓝色HOME点 BF…

python爬取网站数据,作为后端数据

一. 内容简介 python爬取网站数据&#xff0c;作为后端数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接&#xff1a; 三.主要流程 3.1 通过urllib请求网站 里面用的所有的包 ! pip install lxml ! pip install selenium ! pip install…

100G.的DDoS高防够用吗?

很多人以为100G的DDoS防御已经足够了&#xff0c;但殊不知DDoS攻击大小也是需要分行业类型的&#xff0c;比如游戏、金融、影视、电商甚至ZF或者行业龙头等等行业类型&#xff0c;都是大型DDoS攻击的重灾区&#xff0c;别说100G防御&#xff0c;就算300G防御服务器也不一定够用…

开启核磁数据处理新篇章-MestReNova(MNOVA14)助您轻松解读科学界密码

在科学研究领域&#xff0c;核磁共振&#xff08;NMR&#xff09;技术被广泛应用于分析和解读化学物质的结构和性质。而MestReNova&#xff08;MNOVA14&#xff09;作为一款专业的核磁数据处理软件&#xff0c;凭借其强大的功能和易用性&#xff0c;已成为众多科研人员的首选工…