Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!