2009-10-17 11 views
5

मैं थोड़ी देर में प्रोग्रामिंग प्रोग्राम कर रहा हूं, लेकिन सामान्य रूप से डीजेंगो और वेब प्रोग्रामिंग मेरे लिए नया है।डीजेगो दृश्य में लंबे, धीमे ऑपरेशन टाइमआउट का कारण बनता है। पाइथन के बजाय AJAX बोलने का कोई तरीका?

मेरे पास पाइथन व्यू में बहुत लंबा ऑपरेशन किया गया है। चूंकि मेरे दृश्य में स्थानीय() फ़ंक्शन वापस लौटने में बहुत लंबा लगता है, इसलिए एक HTTP टाइमआउट होता है। काफी उचित, मैं उस हिस्से को समझता हूं।

HTTP उपयोगकर्ताओं को तत्काल अपने उपयोगकर्ताओं को वापस देने का सबसे अच्छा तरीका क्या है, फिर गतिशील रूप से पृष्ठ के भीतर कुछ पायथन कोड के परिणाम दिखाएं? मुझे संदेह है कि उत्तर AJAX में झूठ बोल सकता है लेकिन मुझे यकीन नहीं है कि क्लाइंट पर AJAX को सर्वर पर पायथन से कैसे खिलाया जा सकता है, या यहां तक ​​कि मॉड्यूल भी आमतौर पर ऐसी चीज करने के लिए उपयोग करेंगे।

उत्तर

7

अजाक्स को सर्वर की ओर किसी भी विशेष तकनीक की आवश्यकता नहीं है। आपको केवल कुछ रूपों में एक प्रतिक्रिया वापस करने की आवश्यकता है कि क्लाइंट पक्ष पर कुछ जावास्क्रिप्ट समझ सके। JSON यहां एक उत्कृष्ट विकल्प है, क्योंकि पाइथन में बनाना आसान है (2.6 में json लाइब्रेरी है, और Django के पास अन्य संस्करणों के लिए django.utils.simplejson है)।

तो आपको बस इतना करना है कि अपना डेटा JSON फॉर्म में डालें, फिर इसे किसी अन्य प्रतिक्रिया के रूप में भेजें - यानी इसे HTTPResponse में लपेटकर।

5

एक तरीका है AJAX/JS या सामान्य तरीके से कार्य सबमिट करना, इसे अपने दृश्य में पृष्ठभूमि में प्रारंभ करना और तुरंत लौटना। फिर क्लाइंट पक्ष पर AJAX/JS का समय-समय पर जांच करें कि कार्य पूरा हो गया है या नहीं। यदि यह पृष्ठ को फिर से लोड किया गया है या ग्राहक को एक लिंक प्रदान किया गया है।

ग्राहक "कृपया इस डेटा का उपयोग कर कार्य प्रारंभ करें।" -> सर्वर

ग्राहक < - "टास्क शुरू कर दिया!" सर्वर

ग्राहक "हो गया?" -> सर्वर

ग्राहक < - "। नहीं" सर्वर

ग्राहक "हो गया?" -> सर्वर

ग्राहक < - सर्वर

सर्वर से ग्राहक के लिए डेटा भेजने जबकि ग्राहक के लिए पूछे बिना "हाँ, यहाँ एक कड़ी है जहाँ आप परिणाम देख सकते हैं कि" यह संभव है, अच्छी तरह से एक, (प्रौद्योगिकी Comet कहा जाता है) यह आपके मामले में वास्तव में आवश्यक नहीं है।

1

मुझे यकीन नहीं है कि यह वही है जो आप खोज रहे हैं, लेकिन maybe this question (पायथन में AJAX के लिए न्यूनतम सर्वर को कैसे कार्यान्वित करें?) सहायक है। मेरे जवाब में मैं एक न्यूनतम उदाहरण देता हूं (जो बहुत अच्छी तरह से लिखा नहीं गया है, उदाहरण के लिए अब मैं jquery का उपयोग करूंगा ...)।

संपादित करें: ओपी द्वारा अनुरोध किए अनुसार, यहां JQuery के साथ अग्रभाग का एक उदाहरण है। ध्यान दें कि मैं इस पर कोई विशेषज्ञ नहीं हूं, इसलिए समस्याएं हो सकती हैं। यह उदाहरण JSON-RPC बैकएंड के साथ काम करना चाहिए, जैसे this one

<html> 
<head> 

<title>JSON-RPC test</title> 

<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="json2.js"></script> 

<script type="text/javascript"> 

function test_button() { 
    var data = $("[name=test_text]").val(); 
    var json_object = {"method": "power", 
         "params": [parseInt(data), 3], 
         "id": "test_button"}; 
    var json_string = JSON.stringify(json_object); 
    $.post("frontend.html", json_string, test_callback, "json") 
} 

function test_callback(json_object) { 
    $("#test_result").text(json_object.result.toString()); 
} 

</script> 

</head> 
<body> 

<input type="text" name="test_text" value="2" size="4"> 
** 3 = 
<span id="test_result">0</span> 
<input type=button onClick="test_button();" value="calc" title="calculate value"> 

</body> 
</html> 
+0

अगर किसी के पास सर्वर पर एक पूर्ण पायथन (Django के डीबी मॉडल का उपयोग करके) और क्लाइंट उदाहरण पर JQuery है, तो मेरे बच्चे होंगे। – mikemaccana

+0

मैं Django के साथ आपकी मदद नहीं कर सकता, लेकिन क्लाइंट पर JQuery का उपयोग करने में कोई समस्या नहीं है, मेरा अद्यतन उत्तर देखें। – nikow

संबंधित मुद्दे