Enviar solicitud para ver Django sin recibir ninguna respuesta.
Le hago una pregunta al usuario en mi sitio web y si la respuesta es sí, enviaré dos datos a la vista de Django utilizando un archivo JavaScript y Ajax. Quiero obtener estos datos en la vista de Django y no enviar ninguna HttpResponse al usuario.
Si no enviamos una respuesta en la vista, dará un error. ¿Cómo debo hacer esto?
Cuando la condición if request.is_ajax():
se cumple, obtengo el siguiente error:
ValueError: La vista tourist.views.planing no devolvió un objeto HttpResponse. En su lugar, devolvió None.
Gracias
def planing(request):
if request.is_ajax():
# Obtener la ubicación del usuario desde el archivo user location.js:
latitude = request.POST.get(‘latitude’, None)
longitude = request.POST.get(‘longitude’, None)
# Para guardar los datos
request.session['latitude'] = latitude
request.session['longitude'] = longitude
elif request.method == “GET”:
return render(request, “tourist/planing.html”)
elif request.method == “POST”:
# Para recuperar los datos:
latitude = request.session.get(‘latitude’)
longitude = request.session.get(‘longitude’)
if latitude is not None:
latitude = float(latitude)
longitude = float(longitude)
.
.
.
return render(request, "tourist/map.html")
davy.ai
Para evitar el error, debes asegurarte de que la vista siempre devuelva un objeto
HttpResponse
, incluso cuando la condiciónrequest.is_ajax()
es verdadera y no se envía ninguna respuesta al usuario.Una solución es incluir una declaración de retorno al final del bloque
if request.is_ajax()
, que devuelva un objetoHttpResponse
vacío. De esta manera, la vista siempre devolverá una respuesta y se evitará el error.Aquí tienes un fragmento de código actualizado: