django---inclusion_tag使用

本文介绍了如何在Django中创建自定义模板标签,用于展示用户创建和参与的项目列表,以及根据用户访问路径动态高亮管理菜单。通过`inclusion_tag`装饰器创建了两个模板标签`project_list`和`manage_menu_list`,分别用于渲染项目列表和管理菜单。`manage_menu_list`标签还会检查当前URL,为激活的菜单项添加`active`类。
摘要由CSDN通过智能技术生成

1. 创建一个 templatetags文件夹(一定叫这个)

2. 在里面创建一个py文件(名字随便起) 比如 project

3. 在py文件中书写代码

from django.template import Library
from web import models
from django.urls import reverse


register = Library()


@register.inclusion_tag('inclusion/all_project_list.html')
def project_list(request):
    # 我创建的
    my_project_list = models.Project.objects.filter(creator=request.tracer.user)
    # 我参加的
    join_project_list = models.ProjectUser.objects.filter(user=request.tracer.user)

    return {'my': my_project_list, 'join': join_project_list}


@register.inclusion_tag('inclusion/manage_menu_list.html')
def manage_menu_list(request):
    data_list = [
        {'title': '概览', 'url': reverse("dashboard", kwargs={'project_id': request.tracer.project.id})},
        {'title': '问题', 'url': reverse("issues", kwargs={'project_id': request.tracer.project.id})},
        {'title': '统计', 'url': reverse("statistics", kwargs={'project_id': request.tracer.project.id})},
        {'title': 'wiki', 'url': reverse("wiki", kwargs={'project_id': request.tracer.project.id})},
        {'title': '文件', 'url': reverse("file", kwargs={'project_id': request.tracer.project.id})},
        {'title': '配置', 'url': reverse("setting", kwargs={'project_id': request.tracer.project.id})},
    ]
    for item in data_list:
        # 当前用户访问的URL:request.path_info:  /manage/4/issues/xxx/add/
        if request.path_info.startswith(item['url']):
            item['class'] = 'active'

    return {'data_list': data_list}

4. 使用 

4.使用 先在前端界面加载一下 

{% load project %}

5.然后就可以使用了      
       
{% manage_menu_list request %}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑猪去兜风z1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值