आपको अपनी ऑब्जेक्ट सूची को JSON शब्दकोश में निर्यात करने की आवश्यकता होगी।
if request.path == "/sort/":
sortid = request.POST.get('sortid')
locs = Location.objects.order_by(sortid)
if request.is_ajax():
import json
return HttpResponse(json.dumps(locs), mimetype="application/json")
हालांकि, आपको कुछ प्रकार के क्लाइंट-साइड टेम्पलेट सिस्टम का उपयोग करने की आवश्यकता होगी।
Django के render_to_response
शॉर्टकट का उपयोग करने का एक बेहतर तरीका है। JSON के साथ प्रतिक्रिया देने के लिए आपको वास्तव में "आवश्यकता" नहीं है। आप केवल स्ट्रिंग के अनुरोध के जवाब दे सकते हैं।
मैं आमतौर पर AJAX संचालित चीजों के लिए दो टेम्पलेट्स बना देता हूं। पहला आंशिक टेम्पलेट है, जिसमें केवल HTML का विशिष्ट बिट शामिल है जिसे मैं AJAX- अद्यतन के दौरान अपडेट करना चाहता हूं। दूसरा एक रैपर है, जिसका उपयोग तब किया जा सकता है जब दृश्य सामान्य रूप से कहा जाता है।
एक सस्ता उदाहरण है, यहाँ मेरी object_list.html है:
<ul id='object-list'>
{% for object in object_list %}
<li>{{ object.value }}</li>
{% endfor %}
</ul>
और यहाँ मेरी base.html है:
<html>
<title>Example</title>
<body>
{% include 'object_list.html' %}
</body>
</html>
दृश्य के लिए, यदि आप ऐसा करना चाहता हूँ:
from django.shortcuts import render_to_response
from django.template import RequestContext
from models import Location
def view(request):
locs = Location.objects.order_by(sortid)
if request.is_ajax():
return render_to_response('object_list.html', {'object_list': locs}, context_instance=RequestContext(request))
return render_to_response('base.html', {'object_list': locs}, context_instance=RequestContext(request))
यह चलिए सामान्य रूप से एक मानक जीईटी के माध्यम से, या एक एक्सएचटीटीपी अनुरोध के माध्यम से सामान्य रूप से कॉल किया जाता है, केवल आंशिक HTML को लौटाता है जिसे आप चाहते हैं अद्यतन करें। हैंडी!
उस तरह के एक प्रकार के फ़ंक्शन के लिए, आपको वास्तव में जीईटी विधि का उपयोग करना चाहिए, पोस्ट नहीं, क्योंकि आप सर्वर पर किसी भी सामग्री को नहीं बदल रहे हैं, इसलिए भविष्य में आप एक ईटीएजी या प्रतिक्रिया को कैश करने के समान ही संलग्न कर सकते हैं। – LtWorf