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 %}