无法获取属于当前用户的组

时间:2017-12-14 19:03:33

标签: python html css django

我正在构建一个需要两件事的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对象。谢谢!

1 个答案:

答案 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()