Django 自定义标签

1,简单标签

1.1 添加自定义标签函数

Test/app5/templatetags/mytags.py

from django import template
register = template.Library()
@register.simple_tag()
def show_title(value, n):if len(value) > n:return f'{value[:n]}...'else:return value

 

1.2 添加视图函数

from django.shortcuts import render# Create your views here.
import datetimedef filter(request):str1 = 'abcdefg'str2 = 'ABCDEFGHIJKLMNO'str3 = '123456789'time_str = datetime.datetime.now()return render(request, '5/filter.html', {'str1':str1, 'str2':str2, 'str3':str3, 'time_str':time_str})def html_filter(request):html_addr = """<table border='2'><tr><td>这是表格A</td><td>这是表格B</td></tr></table>"""html_script = """<script language='JavaScript'>document.write('非法执行');</script>"""return render(request, '5/html_filter.html', {"html_addr":html_addr, "html_script":html_script})def diy_filter(request):dict1 = {'标题': '学习Django天天加班,熬到深夜,沉迷学习无法自拔!'}dict2 = {'标题': '学习java天天加班,熬到深夜,沉迷学习无法自拔!'}dict3 = {'标题': '学习C++天天加班,熬到深夜,沉迷学习无法自拔!'}lists = [dict1, dict2, dict3]return render(request, '5/diy_filter.html', {"lists":lists})def diy_tags(request):dict1 = {'标题': '学习Django天天加班,熬到深夜,沉迷学习无法自拔!'}dict2 = {'标题': '学习java天天加班,熬到深夜,沉迷学习无法自拔!'}dict3 = {'标题': '学习C++天天加班,熬到深夜,沉迷学习无法自拔!'}lists = [dict1, dict2, dict3]return render(request, '5/diy_tags.html', {"lists":lists})

1.3 添加路由地址

Test/app5/urls.py

from django.urls import path
from . import viewsurlpatterns = [path('filter', views.filter, name='filter'),path('html_filter', views.html_filter, name='html_filter'),path('diy_filter', views.diy_filter, name='diy_filter'),path('diy_tags', views.diy_tags, name='diy_tags'),
]

1.4 添加html代码

Test/templates/5/diy_tags.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>{% load mytags %} <!-- 使用半角字符 -->
<table border="1" style="width: 300px">{% for list in lists %}<tr><td>{% show_title list.标题 10 %}</td></tr>{% endfor %}
</table></body>
</html>

1.5 访问页面

http://127.0.0.1:8000/app5/diy_tags

2,包含标签

2.1 添加自定义标签函数

Test/app5/templatetags/mytags.py

from django import template
register = template.Library()
@register.simple_tag()
def show_title(value, n):if len(value) > n:return f'{value[:n]}...'else:return value@register.inclusion_tag("5/show_info_tags2.html")
def show_info_tags2():dict1={'标题':'小强|2024-06-29'}dict2={'标题':'小强|2024-06-29'}dict3={'标题':'小强|2024-06-29'}lists=[dict1,dict2,dict3]return {'lists':lists}

2.2 添加html代码

Test/templates/5/show_info_tags2.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><table border="1" style="width: 310px">{% for list in lists %}<tr><td>{{ list.标题 }}</td></tr>{% endfor %}
</table></body>
</html>

2.3 添加视图函数

Test/app5/views.py

from django.shortcuts import render# Create your views here.
import datetimedef filter(request):str1 = 'abcdefg'str2 = 'ABCDEFGHIJKLMNO'str3 = '123456789'time_str = datetime.datetime.now()return render(request, '5/filter.html', {'str1':str1, 'str2':str2, 'str3':str3, 'time_str':time_str})def html_filter(request):html_addr = """<table border='2'><tr><td>这是表格A</td><td>这是表格B</td></tr></table>"""html_script = """<script language='JavaScript'>document.write('非法执行');</script>"""return render(request, '5/html_filter.html', {"html_addr":html_addr, "html_script":html_script})def diy_filter(request):dict1 = {'标题': '学习Django天天加班,熬到深夜,沉迷学习无法自拔!'}dict2 = {'标题': '学习java天天加班,熬到深夜,沉迷学习无法自拔!'}dict3 = {'标题': '学习C++天天加班,熬到深夜,沉迷学习无法自拔!'}lists = [dict1, dict2, dict3]return render(request, '5/diy_filter.html', {"lists":lists})def diy_tags(request):dict1 = {'标题': '学习Django天天加班,熬到深夜,沉迷学习无法自拔!'}dict2 = {'标题': '学习java天天加班,熬到深夜,沉迷学习无法自拔!'}dict3 = {'标题': '学习C++天天加班,熬到深夜,沉迷学习无法自拔!'}lists = [dict1, dict2, dict3]return render(request, '5/diy_tags.html', {"lists":lists})def show_info_2(request):return render(request, '5/show_info_2.html')

2.4 添加html代码

Test/templates/5/show_info_2.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>{% load mytags %}
<p>当前文件是show_info_2</p>
<p>以下内容是从另外一个模版文件show_info_tags2加载的</p>
{% show_info_tags2 %}
</body>
</html>

2.5 添加路由地址

Test/app5/urls.py

from django.urls import path
from . import viewsurlpatterns = [path('filter', views.filter, name='filter'),path('html_filter', views.html_filter, name='html_filter'),path('diy_filter', views.diy_filter, name='diy_filter'),path('diy_tags', views.diy_tags, name='diy_tags'),path('show_info_2', views.show_info_2, name='show_info_2'),]

2.6 访问页面

http://127.0.0.1:8000/app5/show_info_2

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

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

相关文章

C++中栈内存和堆内存的区别--实例说明

在C中&#xff0c;栈内存和堆内存是两种不同的内存分配方式。它们有着不同的使用场景和管理方式。以下是它们的主要区别&#xff1a; 栈内存&#xff08;Stack Memory&#xff09;&#xff1a; 栈内存是由编译器自动分配和释放的内存区域&#xff0c;用于存储函数的局部变量和函…

Typora failed to export as pdf. undefined

变换版本并没有用&#xff0c;调整图片大小没有用 我看到一个博客后尝试出方案 我的方法 解决&#xff1a;从上图中的A4&#xff0c;变为其他&#xff0c;然后变回A4 然后到处成功&#xff0c;Amazing&#xff01; 参考&#xff1a; Typora 导出PDF 报错 failed to export…

javaScript利用indexOf()查找字符串的某个字符出现的位置

1 创建字符串 2 利用indexof()查询字符串的字符 3 利用while循环判断indexOf是否等于-1&#xff0c;不等于-1就打印一次并且索引号1去查下一个字符 //创建字符串var str1234567812311231;var indexstr.indexOf(1);//查询该字符while(index !-1)//indexOf()没有查到会返回-1{…

【Linux】使用chrony同步时间

chrony介绍 chrony 是一个开源的网络时间协议 (NTP) 客户端和服务器&#xff0c;旨在保持计算机系统的时间精确同步。它是Linux和其他类Unix系统中广泛使用的工具&#xff0c;特别是在需要高精度时间同步的环境中。chrony 的设计考虑了现代网络的挑战&#xff0c;如不稳定的连…

负载均衡器有什么用?

负载均衡器有什么用&#xff1f; 负载均衡器是一种在多个服务器之间分配网络或应用程序流量的设备或软件应用程序。其主要目的是确保没有一台服务器承担过多的需求&#xff0c;从而提高应用程序的响应速度和可用性。 在计算机发展的早期&#xff0c;负载均衡是一个手动过程。…

AI Prompt 提示词编写公式

自 OpenAI 的 ChatGPT 横空出世至今&#xff0c;各种 AI 大模型百花齐放、百家争鸣。按照用途可以分为两类&#xff1a; 对话类&#xff1a;即通过文字、语音、图片或者视频输入来给模型下达指令&#xff0c;然后模型按照指令以文字的形式将回答输出给用户&#xff1b;生成类&…

使用DNSLog进行DNS请求追踪与分析

使用DNSLog进行DNS请求追踪与分析 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是DNSLog&#xff1f; DNSLog是一种用于捕获和分析DNS&#xff08;Dom…

暑假兼职赚生活费

兼职项目种类繁多&#xff0c;以下是一些常见的副业兼职项目&#xff0c;供您参考&#xff1a; 写作兼职&#xff1a; 挖掘专长领域&#xff1a;如科技、金融、教育等。 注册自由职业平台&#xff1a;如猪八戒网、酷咖写手等&#xff0c;完善个人资料和作品展示。 宣传与建立…

lodash.js 工具库

lodash 是什么? Lodash是一个流行的JavaScript实用工具库,提供了许多高效、高兼容性的工具函数,能够方便地处理集合、字符串、数值、函数等多种数据类型,大大提高工作效率。 lodash官网 文档参见:Lodash Documentation lodash 在Vue中怎么使用? 1、首先安装 lodash np…

【Linux】Linux中DNS配置文件/etc/resolv.conf详解

文章目录 1 DNS相关配置文件2 /etc/resolv.conf配置文件中的字段解析3 容器中的/etc/resolv.conf配置 1 DNS相关配置文件 在不安装额外组件的情况下&#xff0c;与域名解析相关的配置文件主要有三个&#xff1a; /etc/hosts&#xff1a;本地的域名和IP的映射关系&#xff0c;…

视频云计算的未来发展趋势:智能化、个性化与云端协同助力智慧城市安防监控

随着信息技术的飞速发展&#xff0c;云计算作为一种全新的服务模式&#xff0c;正在改变我们处理数据和信息的方式。而视频云计算技术&#xff0c;作为云计算领域的一个重要分支&#xff0c;以其独特的优势&#xff0c;正在逐步渗透到我们生活的各个领域。 一、视频云计算技术…

宝塔mysql在启动时报错“Failed to open log xxxxxx/mysql-bin.000003 not found,errno 2“

问题描述&#xff1a;mysql在启动时报错"Failed to open log xxxxxx/mysql-bin.000003 not found,errno 2"&#xff0c;如下所示&#xff1a; 数据库&#xff1a;MySQL 5.6.50 场景描述&#xff1a;无缘无故&#xff0c;数据库无法启动&#xff0c;重启数据库报错.…

【折腾笔记】兰空图床使用Minio作为储存策略

前言 花了几个小时研究了一下在兰空图床中使用Minio作为存储策略,官方并没有给出太多关于minio的储存策略配置文档,我是经过反复尝试,然后根据错误日志的提示以及查阅兰空图床在GitHub上面的issues悟出来的配置方法。 因为我的兰空图床和Minio都是基于群晖的NAS设备DS423+…

干货 | AI 产品经理的成长之路(ChatBot 方向)

近几年&#xff0c;人工智能在投资圈、创业圈甚至是全社会都成了热词&#xff0c;那么提起人工智能&#xff0c;一定会想到机器学习、深度学习、自然语言处理等等名词&#xff0c;同时也会想到这些技术背后的人才—算法工程师&#xff0c;因此这两年算法工程师成为了人才市场上…

pdf拆分,pdf拆分在线使用,pdf拆分多个pdf

在数字化的时代&#xff0c;pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而&#xff0c;有时候我们可能需要对一个大的pdf文件进行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何将一个pdf文件拆分成多个pdf呢&#xff1f;本文将为你推荐一种好用的拆分…

精准提取,深度清洗——筛斗数据技术在大数据时代的重要性

精准提取&#xff0c;深度清洗——筛斗数据技术在大数据时代的重要性 在数据驱动的今天&#xff0c;数据已成为推动社会进步和企业发展的关键资源。然而&#xff0c;随着大数据的迅猛增长&#xff0c;如何从海量、复杂、无序的数据中精准提取有价值的信息&#xff0c;并通过深…

相关作业调度算法的完成时间、周转时间、平均周转时间等问题

☀️☀️☀️ 相关作业调度算法的完成时间、周转时间、平均周转时间等问题 ​ 周转时间&#xff1a;从作业被提交给系统开始&#xff0c;到作业完成为止的这段时间间隔称为作业周转时间。 带权周转时间&#xff1a;即作业的周转时间T与系统为它提供服务的时间Ts之比&#xff…

兼容类的面试题

1. 如何关闭IOS键盘首字母自动大写 /* 添加autocapitalize即可 */ <input type"text" autocapitalizeoff> 2. 如何让Chrome支持小于12px的文字 /* Chrome浏览器默认文字大小是16px */ /* Chrome 中文版浏览器会默认设定页面的最小字号是12px&#xff0c;英文版…

生成独立的zedboard+ad9361起始项目

文件分享 链接&#xff1a;https://pan.baidu.com/s/17wB_9xVWjO7HhxNvmmZyuA 提取码&#xff1a;94zz 首先下载HDL和NO-OS项目 git clone --recursive https://github.com/analogdevicesinc/hdl git clone --recursive https://github.com/analogdevicesinc/no-OS下载…

CXL:拯救NVMe SSD缓存不足设计难题-2

LMB提出了基于CXL协议的内存扩展框架和内核模块。该方案利用CXL内存扩展器作为物理DRAM源&#xff0c;旨在提供一个统一的内存分配接口&#xff0c;使PCIe和CXL设备都能方便地访问扩展的内存资源。通过这个接口&#xff0c;NVMe驱动和CUDA的统一内存内核驱动可以直接高效地访问…