Czy mogę użyć sprawdzania uprawnień aplikacji Auth wewnątrz szablonu w Django? (Chcę wyświetlić prosty formularz na końcu szablonu dla uprzywilejowanych użytkowników)
A co ważniejsze, czy powinienem to w ogóle zrobić, czy nie jest to „droga Django”?
django
django-authentication
Daniel
źródło
źródło
Odpowiedzi:
Jeśli chcesz sprawdzić uprawnienia w szablonach, wystarczy następujący kod:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Gdzie model odnosi się do modelu, do którego użytkownik potrzebuje uprawnień, aby wyświetlić formularz.
Więcej przykładów znajdziesz na https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions .
(To wymaga następujących procesor kontekście jest włączona:
django.contrib.auth.context_processors.auth
)źródło
perms.app_label.foobar
zawsze będzie prawdziwe, nawet jeśli błędnie wpisałeś nazwę uprawnienia.Testowane na Django 2.0 +
Jeśli chcesz zobaczyć wszystkie uprawnienia, jakie posiada zalogowany użytkownik, w swoim szablonie (.html), wydrukuj:
Lub
{{ perms }}
Aby sprawdzić, czy użytkownik ma uprawnienia, użyj:
Np .:
Tutaj: Wykorzystanie to nazwa mojej aplikacji. Faktura to nazwa modelu.
Pamiętaj, że ogólnie będą dostępne 4 rodzaje uprawnień:
Ponadto, jeśli chcesz zobaczyć wszystkie uprawnienia, które ma użytkownik ze względu na grupy, do których należy, uruchom powłokę Django ...
user = User.objects.get(username='somename') user.get_group_permissions()
Tutaj wszystkie wymienione uprawnienia są związane z grupami, do których należy.
źródło
Jeśli potrzebujesz większej szczegółowości w sprawdzaniu uprawnień (na przykład na określonym obiekcie), sprawdź to rozszerzenie: http://django-authority.readthedocs.org/en/latest/check_templates/
źródło
przepraszam, że 'odkopałem' ten post, ale mam problem związany z uprawnieniami, zobacz mój post: Django: logika nie jest dobrze zastosowana w szablonie przy użyciu uprawnień (perm
Ponieważ Arindam wydaje się być bardzo zadowolony z tej koncepcji, mam nadzieję, że on lub inny mógłby mi pomóc
uprawnienia nie są stosowane, nawet jeśli wartość jest poprawna, gdy szukam {{perms}} w moim szablonie, zwraca obiekt, ale nie listę uprawnień, jeśli szukam {{perms.randomization.can_randomize}} zwraca False (lub True ) to jest dobra wartość moja aplikacja nazywa się randomization i definiuję uprawnienie can_randomize w modelach randomizacji (przy użyciu meta), które są częścią mojej aplikacji do randomizacji
Sprawdzam settings.py, ale wszystkie szwy są w porządku
źródło