NSProject
Aug. 17, 2023, 1:29 a.m.

Передача списка в 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
  • Aug. 18, 2023, 2:24 p.m.

Похоже я вновь задал вопрос себе и сам хочу ответить. Сформировать массив в 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
    • Aug. 18, 2023, 11:09 p.m.

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

    1. {% if request.user.is_moderator %}
    2.  
    3. {% endif %}
      NSProject
      • Aug. 18, 2023, 11:37 p.m.

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

        Evgenii Legotckoi
        • Aug. 19, 2023, 12:17 a.m.
        • The answer was marked as a solution.

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

          NSProject
          • Aug. 19, 2023, 12:21 a.m.

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

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Last comments
            • Evgenii Legotckoi
              March 9, 2025, 9:02 p.m.
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
            • VP
              March 9, 2025, 4:14 p.m.
              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
            • ИМ
              Nov. 22, 2024, 9:51 p.m.
              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            • Evgenii Legotckoi
              Oct. 31, 2024, 11:37 p.m.
              Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
            • A
              Oct. 19, 2024, 5:19 p.m.
              Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html