Posso usar a verificação de permissão do aplicativo Auth dentro de um template no Django? (Quero exibir um formulário simples no final do modelo para usuários privilegiados)
E o mais importante, devo fazer isso ou esse não é o "jeito do Django"?
django
django-authentication
Daniel
fonte
fonte
Respostas:
Se você estiver procurando por permissões em modelos, o código a seguir será suficiente:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Onde modelo se refere ao modelo para o qual o usuário precisa de permissões para ver o formulário.
Consulte https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions para obter mais exemplos.
(Isto requer o seguinte contexto processador para ser activado:
django.contrib.auth.context_processors.auth
)fonte
perms.app_label.foobar
sempre será verdadeiro, mesmo se você digitou incorretamente o nome da permissão.Testado em Django 2.0 +
Se você quiser ver todas as permissões que o usuário conectado tem, em seu modelo (.html), imprima:
Ou
{{ perms }}
Para verificar se o usuário tem permissão, use:
{% if perms.app_name.change_model_name_lower_cased %}
Por exemplo :
{% if perms.Utilization.change_invoice %}
Aqui: Utilização é o nome do meu aplicativo. Fatura é um nome de modelo.
Observe que, em geral, haverá 4 tipos de permissões:
Além disso, se você deseja ver todas as permissões que um usuário possui devido aos grupos aos quais ele pertence, inicie o shell do Django ...
user = User.objects.get(username='somename') user.get_group_permissions()
Aqui, todas as permissões listadas são devidas aos grupos aos quais ele pertence.
fonte
Se precisar de mais granularidade na verificação de permissões (em um objeto específico, por exemplo), verifique esta extensão: http://django-authority.readthedocs.org/en/latest/check_templates/
fonte