Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
Cómo enrutar a métodos de vista específicos Django

He estado estudiando los documentos del conjunto de vistas y el enrutador para Django y no puedo entender cómo configurar una ruta para acceder al método en un conjunto de vistas.

Por ejemplo, aquí está mi urls.py:

 from rest_framework.routers import DefaultRouter from users.views import (UserViewSet, testing) router = DefaultRouter() router.register(r"users", UserViewSet, basename="users") urlpatterns = [ path('testing', testing) ]

Y luego este es mi archivo de vistas en mi directorio de usuario

 @csrf_exempt class UserViewSet: def create(self): return JsonResponse({ 'the create endpoint' }) @csrf_exempt def testing(request): return JsonResponse({ "title": "My json res" })

Usando cartero, puedo acceder al punto final example.com/testing y cerrar la sesión de la respuesta json. Sin embargo, trato de presionar example.com/users/create y obtengo un 404. Pensé que la propiedad del basename al registrar el conjunto de vistas con el enrutador agruparía todos los métodos dentro de esa clase en esa ruta de ruta y luego todos los métodos ser su propio punto final. ¿Estoy pensando en esto incorrectamente? Cualquier ayuda sería encantadora ya que soy nuevo en Django. Principalmente he hecho Express y Laravel. ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No convirtió su enrutador en una lista de urlpatterns de URL, por lo que no podrá acceder a su conjunto de vistas de todos modos.

Para convertir el enrutador:

 from rest_framework.routers import DefaultRouter from users.views import (UserViewSet, testing) router = DefaultRouter() router.register(r"users", UserViewSet, basename="users") urlpatterns = [ path('testing', testing), *router.urls, ]

En Django Rest Framework , el método de create de un conjunto de vistas se ejecuta durante una solicitud POST a un uri en particular. En su caso, este uri sería /users .

Si desea agregar un método adicional que se active en /users/create , deberá usar el decorador de action :

 from rest_framework import viewsets from rest_framework.response import JsonResponse class UserViewSet(viewsets.ViewSet): @action(methods=['GET'], url_path='create') def my_custom_action(self): return JsonResponse({ 'the create endpoint' })

Dado que create es un método reservado en los conjuntos de vistas DRF, deberá nombrar el método con otro nombre (en el ejemplo, my_custom_action ) y establecer el parámetro url_path consecuencia.

Si tuviera que omitir url_path , la ruta sería por defecto el nombre del método, por ejemplo. /users/my_custom_action .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda