在我的視圖函數中,我想返回一個json對象(data1)和一些文本/ html(表單)。這可能嗎?是否有可能在文本和json對象的django中返回一個HttpResponse?
這裏是我的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:
...
我想回送兩個HTML表單和ques1 JSON對象。我怎樣才能做到這一點?提前致謝。
只是要100%清楚 - 我送表單數據一個HttpRequest的POST請求(通過ajax),所以我只能將它路由到一個視圖函數。在我的場景中,當用戶提交問題的答案時,我想接收這些數據,對其進行處理,然後發回另一個問題json對象和一個新的輸入表單。 – 2012-01-29 07:38:00
您可以返回一個響應,並在上下文中包含多個對象。這可以只有一個_mime type_ - 所以你可以在回覆中發送多個項目;但是你*不能*在一個響應中結合兩個MIME類型。 在你的例子中,你將mimetype設置爲'application/json'。你可以在技術上發送你想要的任何東西,並把mimetype當作任何東西,但是這不會在客戶端做你想要的。 發送表單和JSON對象的HTML - 將JSON對象添加到響應的上下文中。 – 2012-01-29 08:16:28
請檢查上面編輯的代碼。我將表單和json對象都添加到上下文中,然後我將它發回。你是這個意思嗎?請問json對象在客戶端讀取正確(我正在使用jQuery)?我想,在客戶端閱讀這將是一個噩夢。我沒有使用RequestContext,因爲有更多的變量返回,我不需要。謝謝你的幫助。 – 2012-01-29 09:04:37