1.切换菜单
1.1 * 从数据库中获取:
- 我创建的
- 我参与的
1.2 循环显示
1.3 当前页面需要显示 / 其他页面也需要显示 【inclusion_tag】
# 1.在注册app下创建文件templatetags/project.py
from django.template import Library
from web import models
register = Library()
@register.inclusion_tag('inclusion/all_project_list.html')
def all_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}
# 2.在相应的模板中创建inclusion/all_project_list.html
<ul class="nav navbar-nav">
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> 项
目<span class="caret"></span></a>
<ul class="dropdown-menu">
{% if my %}
<li><i class="fa fa-user-circle" aria-hidden="true"></i> 我创建的</li>
<li role="separator" class="divider"></li>
{% for item in my %}
<li><a href="#">{{ item.name }}</a></li>
{% endfor %}
<li role="separator" class="divider"></li>
{% endif %}
{% if join %}
<li><i class="fa fa-users" aria-hidden="true"></i> 我参与的</li>
{% for item in join %}
<li><a href="#">{{ item.project.name }}</a></li>
{% endfor %}
<li role="separator" class="divider"></li>
{% endif %}
<li><a href="{% url 'project_list' %}">所有项目</a></li>
</ul>
</li>
</ul>
# 3.在manage.py母板中去运用
{% load project %}
{% all_project_list request %}
2.进入项目
路由分化:不同的页面对应的路由不同
/manage/项目ID/dashboard
/manage/项目ID/issues
/manage/项目ID/statistics
/manage/项目ID/file
/manage/项目ID/wiki
/manage/项目ID/setting
创建manage.py视图函数:from django.shortcuts import HttpResponse,render,redirect
def dashboard(request,project_id):
return render(request,"dashboard.html")
def issues(request,project_id):
return render(request,"issues.html")
def statistics(request,project_id):
return render(request,"statistics.html")
def file(request,project_id):
return render(request,"file.html")
def wiki(request,project_id):
return render(request,"wiki.html")
def setting(request,project_id):
return render(request,"setting.html")
在template创建他们各自的模板
在模板project_list中渲染引用
2.1 进入项目菜单展示
2.1.1 判断是否进入项目
判断url是否是以manage开头
project_id是我创建的 or 是我参与的
在中间件【auth.py】中去判断,最后把返回的项目可以封装到Tracer中
class Tracer(object):
def __init__(self):
self.user = None
self.price_policy = None
self.project = None
前端模板[manage.py]中:
这样我们在访问我们创建的 或者 我们参与的 就可以显示出项目所对应出现的版头,并且不能去访问别人的项目
推荐:如果大家有不了解的参数信息,可以到菜鸟去查看哦