Version 4 (modified by 16 years ago) ( diff ) | ,
---|
Como Usar Permissões
Frequentemente surgem dúvidas entre usuários novatos ou até mesmo mais experientes quanto ao uso do sistema de permissões do Django.
As dúvidas mais recentes surgem como questões de limitar a exibição de itens no Admin de acordo com o Usuário ou Grupo do Usuário corrente.
O sistema de permissões do Django cria automaticamente 3 permissões padrão para toda classe de modelo do sistema:
- Can add
- Can change
- Can delete
Como os próprios nomes sugerem, eles determinam os direitos do usuário adicionar, modificar ou excluir itens daquela classe, respectivamente. No caso do usuário não possuir nenhuma das permissões de uma determinada classe de modelo, então esta classe não estará visível no Admin.
Simples né? Sim, mas não se resume a isso.
Esse mesmo nível de permissões pode ser determinado ao grupo do usuário em questão, que facilita a vida do administrador, pois um grupo "Clientes" terá permissões de acesso diferentes de um grupo "Vendedores", e assim fica mais fácil determinar quem é um ou outro.
Supor-usuários não estão sob essas condições e sempre terão acesso ilimitado às permissões.
Criando permissões personalizadas
Para ter uma permissão especial para sua classe de modelo, siga o seguinte exemplo:
class MyClass(models.Model): ... class Meta: permissions = ( ('pode_mudar_status', 'Pode mudar status'), ('pode_fazer_outra_coisa', 'Pode fazer outra coisa'), )
Limitando acesso a uma view para uma permissão
Para determinar que uma view específica pode ser acessada somente por usuários que contenham determinada permissão, siga o seguinte exemplo:
from django.contrib.auth.decorators import permission_required @permission_required('minha_aplicacao.pode_mudar_status') def mudar_status(request): return HttpResponse('alo mundo')
Permissões no Template
Para utilizar permissões no template para exibir ou ocultar uma informação, por exemplo, siga o seguinte exemplo:
{% if perms.minha_aplicacao.pode_mudar_status %} Usuario pode mudar o status. {% else %} Usuario não pode mudar o status. {% endif %}