Ajuda com permissões a métodos HTTP em Django Rest Framework.

26 views
Skip to first unread message

fabio.si...@gmail.com

unread,
Sep 1, 2022, 7:20:23 AM9/1/22
to Python Brasil
Olá todos!
Tenho uma viewset baseada em Classe que atualmente permite a quem está autenticado ter acesso pleno na API, porém eu preciso limitar o usuário Não Administrador, ele não pode excluir nada do cadastro, ele pode ler, editar e salvar mas nunca excluir.

Como eu resolvo isso em uma CBV?

Atualmente minha viewset está assim e inseri comentários abaixo do que preciso
viewset_DRF.png

Daniel Chaves de Lima

unread,
Sep 1, 2022, 7:40:33 AM9/1/22
to python...@googlegroups.com
Você cria uma classe com a permissão que você quer e adiciona na lista de permissões 

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/8031cd52-4f61-41c5-9e48-384a5f638eabn%40googlegroups.com.

Jorge Miguel

unread,
Sep 1, 2022, 7:46:54 AM9/1/22
to python...@googlegroups.com
Da uma pesquisada sobre "user roles django", tem bastante material explicativo.

--

Lucas Brahm

unread,
Sep 1, 2022, 7:47:08 AM9/1/22
to python...@googlegroups.com
É como o Daniel falou. Cria um classe de permissão para este caso. Exemplo:

from rest_framework.permissions import BasePermission


class IsAdmin(BasePermission):
def has_permission(self, request, view):
user = view.request.user

# Administrador
if user.is_superuser:
return True

# Usuário Comum
return request.method in ('GET', 'OPTIONS', 'HEAD', 'PATCH', 'POST')

E lá no sua view coloca essa classe na permission_classes

fabio.si...@gmail.com

unread,
Sep 1, 2022, 10:32:03 AM9/1/22
to Python Brasil
Muito obrigado Lucas, Daniel e jmdin, a dica do Daniel e o exemplo do Lucas foram matadores na resolução da dúvida e é sensacional ver que posso criar minhas próprias permissões. Eu já lí isso na documentação, mas nunca tinha colocado em prática.
E jmdin, vou ver também sobre "roles" do Django, valeu a dica!

Muito obrigado pessoal pela ajuda!
Olhem como ficou!
viewset_DRF_resolvido.png

Reply all
Reply to author
Forward
0 new messages