Django 2.1 - JavaScript customizations in the admin
व्यवस्थापक में जावास्क्रिप्ट अनुकूलन

व्यवस्थापक में जावास्क्रिप्ट अनुकूलन
इनलाइन फॉर्म ईवेंट
जब कोई इनलाइन फ़ॉर्म जोड़ा जाता है या व्यवस्थापक परिवर्तन फ़ॉर्म में हटा दिया जाता है, तो आप कुछ जावास्क्रिप्ट को निष्पादित करना चाह सकते हैं।
formset:added
और
formset:removed
jQuery ईवेंट इसकी अनुमति देते हैं।
इवेंट हैंडलर को तीन तर्क दिए गए हैं:
-
event
jQuery
इवेंट है। -
$row
नई जोड़ी गई (या निकाली गई) पंक्ति है। -
formsetName
वहformsetName
है जो पंक्ति से संबंधित है।
घटना को django.jQuery नाम स्थान का उपयोग करके निकाल दिया जाता है।
अपने कस्टम
change_form.html
टेम्पलेट में,
admin_change_form_document_ready
ब्लॉक का विस्तार करें और ईवेंट श्रोता कोड जोड़ें:
{% extends 'admin/change_form.html' %} {% load static %} {% block admin_change_form_document_ready %} {{ block.super }} <script type="text/javascript" src="{% static 'app/formset_handlers.js' %}"></script> {% endblock %}
(function($) { $(document).on('formset:added', function(event, $row, formsetName) { if (formsetName == 'author_set') { // Do something } }); $(document).on('formset:removed', function(event, $row, formsetName) { // Row removed }); })(django.jQuery);
ध्यान रखने के लिए दो बिंदु:
-
यदि आप
admin/change_form.html
को विरासत में दे रहे हैं तो जावास्क्रिप्ट कोड को एक टेम्प्लेट ब्लॉक में जाना चाहिए या इसे अंतिम HTML में रेंडर नहीं किया जाएगा। -
{{ block.super }}
जोड़ा जाता है क्योंकि Django केadmin_change_form_document_ready
ब्लॉक में परिवर्तन के रूप में विभिन्न कार्यों को संभालने के लिए जावास्क्रिप्ट कोड होता है और हमें इसकी भी आवश्यकता होती है।
कभी-कभी आपको
jQuery
प्लगइन्स के साथ काम करना होगा जो
django.jQuery
नामस्थान में पंजीकृत नहीं हैं।
ऐसा करने के लिए, बस घटनाओं के लिए कोड कैसे सुनता है इसे बदलें।
श्रोता को
django.jQuery
नामस्थान में लपेटने के बजाय, बस वहां से शुरू हुई घटना को सुनें।
उदाहरण के लिए:
{% extends 'admin/change_form.html' %} {% load static %} {% block admin_change_form_document_ready %} {{ block.super }} <script type="text/javascript" src="{% static 'app/unregistered_handlers.js' %}"></script> {% endblock %}
django.jQuery(document).on('formset:added', function(event, $row, formsetName) { // Row added }); django.jQuery(document).on('formset:removed', function(event, $row, formsetName) { // Row removed });