Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda