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 datetime

def 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 views


urlpatterns = [
    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 datetime

def 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 views


urlpatterns = [
    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

相关推荐
m0_380743876 小时前
给 OpenAI API 调用加上模型切换:GPT-5.1 和 Codex 的配置实践
人工智能·python·gpt
2601_962297486 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案
数据结构·python·算法·编程·字符串操作
“AI国潮设计-小江”6 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
公爵爱学习6 小时前
无人机视觉识别前序-Linux-YOLO安装
python·yolo·计算机视觉·conda·无人机
2601_962295336 小时前
使用python实现一个浏览器自动化的脚本
python·脚本·rpa·浏览器自动化·操作
小刘在重生~8 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
大汉堡玩测试8 小时前
langfuse测试实战(一): 配置一个简单的项目快速落地
python·测试工具
一位正在转型AI全栈的前端工程师9 小时前
AI 全栈学习之旅 -Week 8:从单 Agent 到多 Agent 协作:LangGraph 实战与记忆持久化
前端·python
长江后浪博客9 小时前
Python + YOLOv8 疲劳驾驶 AI 视觉检测入门:从模型训练到 ONNX 实时摄像头检测完整实战
人工智能·python·yolo·疲劳驾驶检测·onnx·yolov8
hhzz9 小时前
【OpenCV 入门到精通 01】认识 OpenCV 与计算机视觉:从零建立全局认知
人工智能·python·opencv·计算机视觉·开源