NSProject
17 серпня 2023 р. 01:29

Передача списка в custom templatetags Django

Django

Доброго времени суток. Я пытаюсь реализовать доступ к определённым функциям сайта по названию группы.
И что б не проверять всё примерно таки образом

  1. {% if request.user.groups.first.name == 'admin' %}
  2. My code html
  3. {% elif request.user.groups.first.name == 'superuser' %}
  4. My code html
  5. {% endif %}

Хотел сделать templatetags и передавать в него два аргумента request.user и список групп у которых есть доступ. Но выходит что я не могу передать список. Как это реализовать есть идеи?

2

Вам це подобається? Поділіться в соціальних мережах!

5
NSProject
  • 18 серпня 2023 р. 14:24

Похоже я вновь задал вопрос себе и сам хочу ответить. Сформировать массив в html можнр или передать его из view. Но в моём случае это лишнее. По этому пришёл к идее что можно просо передавать строку и разбирать её как нужно.
В итоге вышло что то вроде этого.

  1. {% if request.user|accessmoderate:'admin, moderator, SuperUser' %}
  2.  
  1. @register.filter()
  2. def access_moderate(user, list_access):
  3. usergroup = user.groups.first().name
  4. list_access = list_access.split(',')
  5. for item in list_access:
  6. if usergroup == item:
  7. return True
  8.  
  9. return False
  10.  

Это в общем то база что мне и была нужна. Из минусов отмечу тот факт чтоб изменить группы доступаа нужно лопатить шаблоны и менять вручную. А так всё

    Evgenii Legotckoi
    • 18 серпня 2023 р. 23:09

    Можно ещё добавить метод в модель пользователя в котором проверять наличие пользователя в той или иной группе

    1. {% if request.user.is_moderator %}
    2.  
    3. {% endif %}
      NSProject
      • 18 серпня 2023 р. 23:37

      Да в принципе можно и так но это дополнительные поля опять же. А я подумал чисто от группы зависит условие. И в принципе на данный момент оно меня устраивает, а уже дальше будет видно. Единственное изменение это конфигурация в settings и работает.
      Главной целью было чтоб не передавать из view чтоб самому не запутаться. А так пока что работает. В дальнейшем может напишу каку систему для универсальности. Может быть )))

        Evgenii Legotckoi
        • 19 серпня 2023 р. 00:17
        • Відповідь була позначена як рішення.

        Вообще я имел ввиду добавить метод, а не поле

          NSProject
          • 19 серпня 2023 р. 00:21

          Ну да кстати как вариант. Надо подумать над этим. Спасибо за подсказку.

            Коментарі

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Останні коментарі
            • IscanderChe
              12 квітня 2025 р. 17:12
              Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
            • AK
              01 квітня 2025 р. 11:41
              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
            • Evgenii Legotckoi
              09 березня 2025 р. 21:02
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
            • VP
              09 березня 2025 р. 16:14
              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
            • ИМ
              22 листопада 2024 р. 21:51
              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…