我正在构建一个需要两件事的Django应用程序。首先,它需要用户有权访问的一组组。使用这组组,我的模板应该为每个组创建一个按钮。接下来,它需要一组“Property”对象,这些对象是ManyToMany与先前找到的一组组中的组相关(这就是说我需要分配给用户有权访问的组的每个属性)。对于每个属性,都会创建一个按钮。我现在正在使用localhost上的管理员用户进行构建,并且我已经创建了一个包含测试属性的测试组,并将管理员用户分配给该组。然而,Django似乎没有检测到这一点。相关代码如下:
views.py
from __future__ import unicode_literals
from django.shortcuts import render
from UsageData.models import Property, User, Group, MeterData
from django.contrib import auth
def reports_proerty_list(request):
if request.user.is_authenticated():
current_user_groups = Group.objects.filter(id__in=request.user.groups.all())
current_user_properties = Property.objects.filter(groups__in=current_user_groups)
return render(request, 'App/App-Template-Page.html')
else:
# The user is redirected to the sign-in page
应用 - 模板page.html中
<div class="row">
{% if current_user_groups %}
{% for group in current_user_groups %}
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">{{ group.name }}</button>
</div>
{% endfor %}
{% else %}
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 1</button>
</div>
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 2</button>
</div>
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 3</button>
</div>
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 4</button>
</div>
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 5</button>
</div>
<div class="col-sm-2 col-md-2 col-lg-2 text-center">
<button class="tab-selector inactive" id="{{ group.id }}">Group 6</button>
</div>
{% endif %}
</div>
我遇到的问题是页面加载时会显示模板的{%else%}部分,我想这意味着current_user_groups不存在。任何人都知道为什么会发生这种情况?如果没有先工作,我自然无法继续使用Property对象。谢谢!
答案 0 :(得分:2)
您尚未将任何变量传递到render函数的上下文
return render(request, 'App/App-Template-Page.html',{
'current_user_groups': current_user_groups,
'current_user_properties': current_user_properties
})
这条线也可以简化
current_user_groups = Group.objects.filter(id__in=request.user.groups.all())
到
current_user_groups = request.user.groups.all()