• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

577
Views
Django Rest Framework, pasando parámetros con solicitud GET, vistas basadas en clases

Me gustaría que un usuario envíe una solicitud GET a mi API REST de Django:

 127.0.0.1:8000/model/?radius=5&longitude=50&latitude=55.1214

con su longitud/latitud y radio, pasados los parámetros y obtener el conjunto de consultas usando GeoDjango.

Por ejemplo, actualmente tengo:

 class ModelViewSet(viewsets.ModelViewSet): queryset = Model.objects.all()

Y lo que idealmente quiero es:

 class ModelViewSet(viewsets.ModelViewSet): radius = request.data['radius'] location = Point(request.data['longitude'],request.data['latitude'] # filter results by distance using geodjango queryset = Model.objects.filer(location__distance_lte=(location, D(m=distance))).distance(location).order_by('distance')

Ahora un par de errores inmediatos:

1) la request no está definida. ¿Debería usar api_view, es decir, la vista basada en funciones para esto?

2) La página DRF dice que request.data es solo para métodos POST, PUT y PATCH. ¿Cómo puedo enviar parámetros con GET?

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede anular el método get_queryset para ese propósito. En cuanto a los parámetros de cadena de consulta, tiene razón, request.data contiene datos POST, puede obtener parámetros de cadena de consulta a través de request.query_params

 def get_queryset(self): longitude = self.request.query_params.get('longitude') latitude= self.request.query_params.get('latitude') radius = self.request.query_params.get('radius') location = Point(longitude, latitude) queryset = Model.objects.filter(location__distance_lte=(location, D(m=distance))).distance(location).order_by('distance') return queryset
over 3 years ago · Santiago Trujillo Report

0

Tuve el mismo problema, para resolverlo puedes obtener parámetros de url con self.request.parser_context.get('kwargs') bajo el método get_queryset .

over 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error