2009-12-02 19 views
14

मैं वर्तमान में एक AJAX- भारी Django एप्लिकेशन के लिए इष्टतम आर्किटेक्चर ढूंढने की कोशिश कर रहा हूं। मैं फॉर्म, सत्यापन, डेटा लाने, जेएसओएन संदेश प्रारूप करने का एक सतत तरीका रखना चाहता हूं लेकिन एक समाधान खोजने के लिए इसे बहुत कठिन लगता है जिसका लगातार उपयोग किया जा सकता है।Django अनुप्रयोग में अजाक्स आर्किटेक्चर

कोई सही दिशा में मुझे बिंदु या सबसे अच्छा अभ्यास पर उनके विचार साझा कर सकते हैं?

+6

अजाक्स में इतना खास क्या है? Django बिंदु से देखने के लिए ये सिर्फ अनुरोध हैं। – GabiMe

+1

कुछ भी नहीं, लेकिन मैं खुद को सामान्य अनुरोध/प्रतिक्रिया चक्र और AJAX अनुरोधों से आने वाली सामग्री का उपयोग कर सामग्री के टेम्पलेट प्रतिपादन को मिश्रण करने के लिए नफरत करता हूं। यह अशुद्ध लगता है। –

उत्तर

2

मैं Django एप्लिकेशन में AJAX डालने के किसी भी मानक तरीके के बारे में नहीं सोच सकता, लेकिन आप इस tutorial पर एक नज़र डाल सकते हैं।

तुम भी बारे में अधिक जानकारी मिल जाएगा django's page about Ajax

2

दो हफ्ते पहले मैंने एक write up कैसे मैं उप टेम्पलेट्स उन्हें "सामान्य" और "अजाक्स" अनुरोध (Django के लिए यह एक ही है) में उपयोग करने के लिए लागू करते हैं। शायद यह आपके लिए सहायक है।

4

मैं सामान्य विचारों जो ब्राउज़र में सामान्य रूप से प्रदर्शित के रूप में सब कुछ कर सकते हैं। इसमें AJAX अनुरोधों (उप पृष्ठ) के सभी उत्तरों शामिल हैं।

मैं साइट को और अधिक गतिशील मैं तो AJAX, या इस मामले में ajah करने के लिए jQuery का उपयोग करें और बस का अनुरोध पेज में उप पेज में divs में से एक की सामग्री लोड के टुकड़े बनाना चाहते है।

यह तकनीक वास्तव में अच्छी तरह से काम करती है - उप पृष्ठों को डीबग करना बहुत आसान है क्योंकि वे सामान्य पृष्ठ हैं, और jQuery आपके जीवन को AJA [XH] ed पृष्ठ के हिस्से के रूप में उपयोग करके बहुत आसान बनाता है।

+0

ठीक है, उचित लगता है। लेकिन क्या आप AJAX अनुरोधों और सामान्य अनुरोधों के लिए अलग-अलग दृश्य फ़ंक्शन करते हैं या आप विभिन्न प्रतिक्रियाओं को वापस करने के लिए if_ajax() का उपयोग करते हैं? फ़ॉर्म के बारे में क्या, क्या आप फॉर्म डेटा जमा करने के लिए सामान्य अनुरोधों का उपयोग करते हैं या आप AJAX का उपयोग करके ऐसा करते हैं? –

+0

मैं एक ऐसा दृश्य बनाता हूं जो पहले ब्राउजर में काम करता है, फिर संबंधित बिट्स को छीनने के लिए jQuery का उपयोग करें और इसे अनुरोध पृष्ठ में डालें। मैंने अभी तक 'is_ajax' का उपयोग नहीं किया है। रूपों के रूप में, मैं गतिशील पृष्ठों हां के लिए jQuery फॉर्म सबमिशन का उपयोग करता हूं। ये पोस्ट सामान्य डीजेंगो व्यू पर हैं। –

+0

मैं एक AJAX/django नौसिखिया हूँ, लेकिन आपकी विधि बहुत अक्षम नहीं है? इसका मतलब है कि वास्तव में आपको वास्तव में आवश्यकता है (वास्तविक डेटा के बजाय सभी आसपास के HTML) की तुलना में बहुत अधिक लौटाना। या क्या मैं कुछ न कुछ भूल रहा हूं? –

2

ब्राउज़र में सामान्य रूप से प्रदर्शित पृष्ठों के लिए निक के लिए +1। यह सबसे अच्छा प्रारंभिक बिंदु प्रतीत होता है।

ऐसे निक के रूप में और प्रस्ताव vikingosegundo सरल AJAX के दृष्टिकोण, के साथ समस्या यह है कि आप अपने जावास्क्रिप्ट में innerHTML संपत्ति पर भरोसा करना होगा है। जेएसओएन में भेजे गए नए एचटीएमएल को डंप करने का यही एकमात्र तरीका है। कुछ लोग इसे एक बुरी बात मानेंगे।

दुर्भाग्य से मुझे Django प्रतिपादन से मेल खाने वाले जावास्क्रिप्ट का उपयोग करके फ़ॉर्म के प्रदर्शन को दोहराने के लिए एक मानक तरीका से अवगत नहीं है। मेरे दृष्टिकोण (कि मैं अभी भी पर काम कर रहा हूँ) Django Form वर्ग उपवर्ग के लिए तो यह as_p() आदि से HTML के साथ जावास्क्रिप्ट के टुकड़े आउटपुट ये तो प्रपत्र मेरी डोम से छेड़छाड़ को दोहराने है।

2

अनुभव से मुझे पता है कि एक सर्वर का प्रबंधन जहां आप सर्वर की ओर से HTML उत्पन्न करते हैं और इसे अपने पृष्ठों में "डालें", एक दुःस्वप्न बन जाता है। Django परीक्षण ढांचे का उपयोग करके परीक्षण करना भी असंभव है। यदि आप सेलेनियम या इसी तरह के टूल का उपयोग कर रहे हैं, तो यह ठीक है, लेकिन आपको AJAX अनुरोध को वापस जाने की प्रतीक्षा करने की आवश्यकता है, इसलिए आपको अपनी टेस्ट स्क्रिप्ट में बहुत सारी नींद की आवश्यकता है, जो आपके परीक्षण सूट को धीमा कर सकता है।

यदि अजाक्स तकनीक का उपयोग करने का उद्देश्य एक अच्छा यूजर इंटरफेस बनाना है, तो मैं जीमेल इंटरफ़ेस की तरह, और जावास्क्रिप्ट के साथ ब्राउज़र में सबकुछ करने की सलाह दूंगा। मैंने बैकएंड पर आरईएसटी के साथ यूआई स्टेटस और जेएसओएन के प्रबंधन के लिए jQuery, राज्य मशीनों के अलावा कुछ भी नहीं, इस तरह के कई ऐप्स लिखे हैं। Django, IMHO, इस मामले में बैकएंड के लिए एक आदर्श मैच है। आपके मॉडल में एक आरईएसटी-इंटरफ़ेस उत्पन्न करने के लिए तीसरे पक्ष के सॉफ़्टवेयर भी हैं, जिन्हें मैंने कभी भी उपयोग नहीं किया है, लेकिन जहां तक ​​मुझे पता है कि वे साधारण चीजों पर बहुत अच्छे हैं, लेकिन आपको अभी भी अपना खुद का व्यवसाय तर्क करने की ज़रूरत है ।

इस दृष्टिकोण के साथ, आप जेएस में कोड को डुप्लिकेट करने की समस्या और आपके बैकएंड में, जैसे फॉर्म हैंडलिंग, सत्यापन आदि की समस्या में भाग लेते हैं।मैं जेएस में उपयोग किए जा सकने वाले फॉर्म और सत्यापन तर्क के बारे में संरचित जानकारी उत्पन्न करने के साथ इसे हल करने के बारे में सोच रहा हूं। इसे तैनाती पर संकलित किया जा सकता है और किसी अन्य जेएस फ़ाइल के रूप में लोड किया जा सकता है।

इसके अलावा, एक्सएमएल से बचें। ब्राउज़र इसे पार्स करने में धीमे होते हैं, यह उत्पन्न करने में दर्द होता है और ब्राउज़र में दर्द करने के लिए दर्द होता है। JSON का प्रयोग करें।

4

इस के सभी उत्तरों के लिए, मैं विश्वास नहीं कर सकता कि किसी का भी उल्लेख नहीं किया गया है django-piston। इसे मुख्य रूप से आरईएसटी एपीआई बनाने में उपयोग के लिए प्रोत्साहित किया जाता है, लेकिन यह जेएसओएन (जो jQuery, दूसरों के बीच, उपभोग कर सकता है) आउटपुट कर सकता है और यह विचारों के समान काम करता है कि आप अनुरोध के साथ कुछ भी कर सकते हैं, जिससे यह AJAX इंटरैक्शन को कार्यान्वित करने के लिए एक शानदार विकल्प बना सकता है (या AJAJ [JSON], AJAH, आदि जो भी हो)। यह form validation का भी समर्थन करता है।

1

इम वर्तमान में परीक्षण:

  • jQuery & backbone.js क्लाइंट साइड

  • Django पिस्टन (मध्यवर्ती परत)

बाद में अपने ब्लॉग पर मेरी निष्कर्ष लिखना होगा http://blog.sserrano.com

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