Python Django如何在侧边栏中列出客户
我用Django创建了一个系统。一个用户有几个客户。侧栏位于Python Django如何在侧边栏中列出客户,python,django,Python,Django,我用Django创建了一个系统。一个用户有几个客户。侧栏位于base.html文件中。我为侧边栏创建了一个视图,但它仅在主页中起作用。当我打开另一个页面时,它就消失了。我怎样才能修好它 视图.py def base(request): current_user = request.user userP = UserProfile.objects.get_or_create(username=current_user) customer_list = Customer.ob
base.html
文件中。我为侧边栏创建了一个视图,但它仅在主页中起作用。当我打开另一个页面时,它就消失了。我怎样才能修好它
视图.py
def base(request):
current_user = request.user
userP = UserProfile.objects.get_or_create(username=current_user)
customer_list = Customer.objects.filter(companyName=userP[0].comp_name)
return render(request, 'base.html', {'customer_list': customer_list})
base.html
<ul>
<li class="header-menu">
<span>Customers</span>
</li>
<li class="sidebar-dropdown">
{% for customer in customer_list %}
<a href="#">
<i class="fa fa-building"></i>
<span>{{customer.name}}</span>
</a>
<div class="sidebar-submenu">
<ul>
<li>
<a href="/customers/{{ customer.id }}/update"> Update</a>
</li>
<li>
<a href="#">Analyses</a>
</li>
</ul>
</div>
{% endfor %}
</li>
</ul>
-
客户
-
{customer_list%}中的客户为%
-
-
{%endfor%}
嗯,{{{user}}
是模板中的当前用户。您可以使用以下方式获得公司:
{% for customer in user.userprofile.customer_set.all %}
{{customer.name}}
{% enfor %}
说明:假设用户与UserProfile
有OneToOne关系,那么您应该通过user.UserProfile
获取用户配置文件信息。现在,Customer
有一个指向UserProfile
的外键。因此,您可以通过查询(或反向查询)user.userprofile.Customer\u set.all()
获得所有Customer
s。如果您已经在ForeignKey中定义了,那么查询应该是user.userprofile..all()
您可以使用。Django具有模板标记,可以在模板中执行复杂的操作
您可以创建一个自定义模板标记,该标记将用户作为输入,并返回客户查询集,您可以将其保存在变量中,然后循环显示所有客户
在myprojectdir/app_name/templatetags/customer_list.py中
from django import template
from myapp.models import Customer
register = template.Library()
@register.simple_tag
def get_customers(user):
userP = UserProfile.objects.get_or_create(username=user)
customer_list = Customer.objects.filter(companyName=userP[0].comp_name)
return customer_list
然后在你的模板中你可以这样做
{% load customer_list %}
{% get_customers request.user as customers %}
{% for customer in customers %}
<Your html code>
{% endfor %}
{%load customer\u list%}
{%get_customers request.user as customers%}
{customers%%中的客户为%s}
{%endfor%}
由于Django将上下文中的请求
自动传递给所有模板,因此您应该使用request.user
访问当前用户
要了解在何处创建模板标记文件,请参阅
有关模板标记的更多信息,请参阅:
您还可以使用而不是简单的标记,以获得更大的灵活性和代码重用性。您必须提供一个“不工作其他页面”的示例,因为这基本上是您问题的本质所在