En mi función de vista, me gustaría devolver un objeto json (data1) y algo de texto/html (formulario). es posible?¿Es posible devolver un HttpResponse en django con texto y un objeto json?
Aquí es parte de mi views.py:
if request.is_ajax() and request.method == 'POST':
...
if form.is_valid():
answer = form.cleaned_data['answer'] # Answer extracted from form is also a string
a1 = ques1.correct_answer
if a1 == answer:
test1 = question_list.get(id=nextid)
form = AnswerForm(test1)
ques1 = question_list.filter(id=nextid) # Filter next question as <qs>
data1 = serializers.serialize("json",ques1) # Json-ize
# ********EDITED HERE **********
variables1 = Context({
'form' : form,
'q1' : data1,
})
#response = HttpResponse()
#response['data1'] = response.write(data1)
#response['form'] = response.write(form)
if nextid <= qsnlen:
return HttpResponse(variables1, mimetype="application/json")
#return HttpResponse(response)
else:
...
me gustaría que enviar tanto el formulario HTML y el objeto ques1 JSON. ¿Cómo puedo hacer esto? Gracias por adelantado.
sólo para estar 100% claro - Estoy enviando una solicitud POST HttpRequest con los datos del formulario (a través de ajax), así que solo puedo enrutarlo a una función de vista. En mi escenario, cuando el usuario envía una respuesta a una pregunta, me gustaría tomar esa información, hacer cosas con ella, y luego devolver otra pregunta objeto json y un nuevo formulario de entrada. –
Puede devolver una respuesta, con múltiples objetos en el contexto. Esto puede ser de solo un _mime type_ - para que pueda enviar múltiples elementos en una respuesta; pero * no puede * combinar dos tipos de mime en una respuesta. En su ejemplo, está configurando el tipo mimetype como 'application/json'. Puedes enviar técnicamente lo que quieras y poner el tipo MIME como lo que sea, pero esto no hará lo que quieras en el lado del cliente. Para enviar el HTML para el formulario y el objeto JSON, agregue el objeto JSON al contexto de la respuesta. –
Por favor, compruebe el código editado arriba. Agregué tanto la forma como el objeto json al contexto, y lo estoy enviando de regreso. ¿Es esto lo que quieres decir? ¿El objeto json se leerá correctamente en el lado del cliente (estoy usando jquery)? Leer esto por el lado del cliente será un poco una pesadilla, creo. No usé RequestContext porque hay muchas más variables que se devuelven que no necesito. Gracias por tu ayuda. –