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”?
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”?
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 .
Uprawnienia aktualnie zalogowanego użytkownika są przechowywane w zmiennej szablonu
{{ perms }}
(To wymaga następujących procesor kontekście jest włączona: django.contrib.auth.context_processors.auth)
perms.app_label.foobarzawsze 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:
{{ perms.app_name }}
Lub
{{ perms }}
Aby sprawdzić, czy użytkownik ma uprawnienia, użyj:
{% if perms.app_name.change_model_name_lower_cased %}
Np .:
{% if perms.Utilization.change_invoice %}
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.
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/
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