मेरे दृश्य फ़ंक्शन में, मैं एक जेसन ऑब्जेक्ट (डेटा 1) और कुछ टेक्स्ट/एचटीएमएल (फॉर्म) वापस करना चाहता हूं। क्या यह संभव है?क्या टेक्स्ट और जेसन ऑब्जेक्ट के साथ 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:
...
मैं वापस दोनों प्रपत्र एचटीएमएल और ques1 json वस्तु भेजना चाहते हैं। मैं यह कैसे कर सकता हूँ? अग्रिम में धन्यवाद।
बस 100% स्पष्ट होना - मैं प्रपत्र डेटा के साथ एक HttpRequest पोस्ट अनुरोध भेज रहा हूँ (AJAX के माध्यम से), इसलिए मैं इसे केवल एक दृश्य समारोह में रूट कर सकता हूं। मेरे परिदृश्य में, जब उपयोगकर्ता किसी प्रश्न का उत्तर सबमिट करता है, तो मैं उस डेटा को लेना चाहता हूं, इसके साथ चीजें करता हूं, और उसके बाद एक अन्य प्रश्न जेसन ऑब्जेक्ट और एक नया इनपुट फॉर्म भेजता हूं। –
संदर्भ में एकाधिक ऑब्जेक्ट्स के साथ आप एक प्रतिक्रिया वापस कर सकते हैं। यह केवल एक _mime type_ का हो सकता है - ताकि आप प्रतिक्रिया में कई आइटम भेज सकें; लेकिन आप * एक प्रतिक्रिया में दो माइम प्रकारों को गठबंधन नहीं कर सकते हैं। अपने उदाहरण में आप mimetype को 'application/json' के रूप में सेट कर रहे हैं। आप तकनीकी रूप से जो कुछ भी चाहते हैं उसे भेज सकते हैं और माइमटाइप को जो कुछ भी डाल सकते हैं, लेकिन यह क्लाइंट एंड पर जो भी आप चाहते हैं वह नहीं करेगा। फॉर्म और JSON ऑब्जेक्ट के लिए HTML भेजने के लिए - प्रतिक्रिया के संदर्भ में JSON ऑब्जेक्ट जोड़ें। –
कृपया ऊपर संपादित कोड की जांच करें। मैंने संदर्भ में फॉर्म और जेसन ऑब्जेक्ट दोनों को जोड़ा, और मैं इसे वापस भेज रहा हूं। क्या तुम्हारे कहने का मतलब यही था? क्या जेसन ऑब्जेक्ट क्लाइंट साइड पर सही ढंग से पढ़ेगा (मैं jquery का उपयोग कर रहा हूं)? क्लाइंट साइड पर इसे पढ़ना एक दुःस्वप्न का थोड़ा सा होगा, मुझे लगता है। मैंने RequestContext का उपयोग नहीं किया क्योंकि वहां कई और चर हैं जिन्हें वापस लौटाया गया है जिनकी मुझे आवश्यकता नहीं है। आपकी सहायता के लिए धन्यवाद. –