Разрешить доступ к страницам в соответствии с ролью пользователя django 1.8

Привет, в моем приложении 3 группы пользователей: секретарь, директор, техник. Я хочу показать страницу, соответствующую каждой роли, на панели навигации после входа пользователя этой роли.

Это мой код просмотра:

def barra_navegacion(request):
    user = request.user
    g = user.groups.all()
    return render_to_response('gestiondoc/barra_panel.html', {'g':g},
                            context_instance=RequestContext(request)

Это фрагмент штрих-кода:

{% if user.is_authenticated %}
    ...
{% if g == 'secretaria' %}
    <li><a href="{% url 'secretaria' %}">Panel Secretaria</a></li>
        {% elif g == 'tecnico' %}
            <li><a href="{% url 'tecdocente' %}">Panel Técnico Docente</a></li>
        {% elif g == 'directora' %}
            <li><a href="{% url 'directora' %}">Panel Directora</a></li>
    {% endif %}
      </ul>
    </li>
    {% else %}
             <li><a href="{% url 'account_login' %}">Entrar</a></li>
    {% endif %}

Группа пользователей не загружается, несмотря на принадлежность к секретарь, g отображается как пустой список.

Я также попытался положить его в основу:

{% if 'secre' in request.user.perfil.grupo %}
  {% include "gestiondoc/barra_panel.html" %}
{% else %}
{% include "gestiondoc/barra_usuario.html" %}  

Но прыгнуть прямо к остальному.

Профиль - это модель, которая имеет групповой метод:

  def grupo(self):
      return self.usuario.groups.values_list('name', flat=True)

Раньше он отображал [<Group:'secretaria>],, но теперь он даже не распознает группу пользователей. Я пробовал несколько способов, но мне не удалось. Заранее спасибо.

0
задан 30.11.2018, 22:19
2 ответа

Я обычно использую что-то asГ-:

{% for groups in request.user.groups.values_list %}
      {% for group in groups %}
         {% if group == 'Secretaria'%}
               ...
         {%endif%}
      {% endfor %}
{% endfor %}
0
ответ дан 24.11.2019, 13:44
{% ifequal user.groups.all.0 'Sales' %}
   ...
{% endif %}

или в модели, в методе группа (self) добавляет property

@property
def grupo(self):
      return self.usuario.groups.values_list('name', flat=True)
0
ответ дан 24.11.2019, 13:44