Могу ли я сделать представление видимым для некоторых определенных пользователей, а для других нет на Django

Я хочу сделать некоторые страницы недоступными для некоторых пользователей, что я имею в виду, например, я хочу, чтобы пользователь1 мог видеть viewa и не мог видеть viewb, я пытался сделать это, я разработал 2 функции разрешений и функцию роли пользователя:

Вот код 2 функций разрешений в views.py:

def is_normaluser_login_required(function):
    def wrapper(request, *args, **kw):
        user=request.user  
        if not user.roleuser.is_normaluser:
            return render(request, 'unauthorized.html') # or raise 403
        else:
            return function(request, *args, **kw)
    return wrapper

def is_privilgeuser_login_required(function):
    def wrapper(request, *args, **kw):
        user=request.user  
        if not user.roleuser.is_privilgeuser:
            return render(request, 'unauthorized.html')  # or raise 403
        else:
            return function(request, *args, **kw)
    return wrapper

у меня есть шаблон go to home, где есть боковая панель, содержащая 2 списка (каждый список вызывает представление), я хочу, чтобы только пользователи, которым разрешено видеть эту форму-список на панели навигации;

Вот код в template.html, который содержит 2 формы, которые я хочу ограничить доступ для обеих:

<nav class="mt-2">
    <ul class="nav" >
      {% if perms.app1_name.is_normaluser_login_required %}
          <li class="nav-item">
            <a href="{%url 'form_module1'%}" class="nav-link">
            </a>
          </li>
      {% endif %}
      {% if perms.app1_name.is_privilgeuser_login_required %}
      <!---->
          <li class="nav-item">
            <a href="{%url 'form_module2'%}" class="nav-link">
            </a>
          </li>
      {% endif %}
    </ul>
  </nav>

---> после этого два списка исчезают из панели навигации (как будто не имеет значения, есть ли у пользователя его роль или нет), иначе я указал на странице администратора пользователей и их роли.

это как те :

  {% if perms.app_name.is_privilgeuser_login_required %}
      #code...
  {% endif %}

-> не работает

Я не знаю, можно ли это применить, спасибо заранее.

Вы не можете использовать декораторы в шаблоне так, как вы можете создать пользовательский фильтр или тег шаблона.
Вместо создания пользовательского фильтра/тега вы можете сделать это по запросу.
Измените ваш код следующим образом

<nav class="mt-2">
    <ul class="nav" >
      {% if user.roleuser.is_normaluser %}
          <li class="nav-item">
            <a href="{%url 'form_module1'%}" class="nav-link">
            </a>
          </li>
      {% endif %}
      {% if user.roleuser.is_privilgeuser %}
      <!---->
          <li class="nav-item">
            <a href="{%url 'form_module2'%}" class="nav-link">
            </a>
          </li>
      {% endif %}
    </ul>
  </nav>
Вернуться на верх