我正在尝试使用Django创建一个管理网站。我已经掌握了基本功能,但我无法“动态”渲染内容。我想基于单击按钮来渲染块。
目前,我有一个员工视图,将某些事件对象呈现为树。我正在使用Django的mptt库来构建树。
employeeView
@method_decorator(login_required, name='dispatch')
class employeeView(View):
def get(self, request, user_id):
if request.user.is_authenticated():
user=request.user
nodes = Event.objects.filter(owner=user)
return render(request, "employee_view.html", {'user': user, 'nodes': nodes})
employee_template.html
{% extends "base.html" %}
{% block content %}
<title>Your events</title>
These are your events
{% load mptt_tags %}
<ul>
{% recursetree nodes %}
<li>
<b>{{ node.name }} </b>
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
{% endblock %}
然后我有一个经理视图,它目前返回由经理管理的员工以及与他们相关的所有事件。
managerView
class managerView(View):
@method_decorator(user_passes_test(lambda i: u.myuser.isManager))
def get(self, request, user=None, myuser=None):
if request.user.is_authenticated():
user = request.user
...
return render(request, "supervisor_view.html", {'user': user, 'employees': employees, "nodes": nodes,})
到目前为止,一切都按预期运作。托管员工将被提供给经理模板,并在侧栏上呈现。下面是我的经理模板的片段。它包含一个主视图块和一个侧边栏块。主视图当前为空,但默认情况下应显示员工的一些元数据。这很容易实现。当在侧栏上单击员工姓名时,我希望mainView块为员工提供“事件树”,即为点击其姓名的员工呈现员工模板。我该怎么做呢?
manager_template.html
{% extends "base.html" %}
{% block leftbarEmployees %}
<ul class="sidebar-menu">
<li class="header">Your employees</li>
{% for employee in employees %}
<li><a href="#"><i class='fa fa-link'></i> <span>{{ employee }}</span></a></li>
{% endfor %}
</ul>
{% endblock %}
{% block mainView %}
<!-- the default mainView will just be some metadata gathered from
the passed nodes etc. -->
{% endblock%}
我一直在阅读django关于如何执行此操作的文档,特别是有关包含标记的文档:https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#include这是解决此问题的好方法吗?我有点不确定如何将名称被点击的员工的信息传递给包含标签