es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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")
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para evitar el error, debes asegurarte de que la vista siempre devuelva un objeto HttpResponse, incluso cuando la condición request.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 objeto HttpResponse vacío. De esta manera, la vista siempre devolverá una respuesta y se evitará el error.

    Aquí tienes un fragmento de código actualizado:

    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
    
            return HttpResponse() # devuelve un objeto HttpResponse vacío
    
        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)
    
           # resto del código
           .
           .
           .
    
            return render(request, "tourist/map.html")
    

Comments are closed.