मान लें कि मेरे पास तीन ऐप्स के साथ एक Django प्रोजेक्ट है: foo, bar, और गोंद। मैं पुन: प्रयोज्य ऐप सम्मेलनों का पालन करने की कोशिश कर रहा हूं, इसलिए फू और बार एक दूसरे पर या गोंद पर निर्भर नहीं हैं (और कुछ भी नहीं जानते)। गोंद में साइट पर अन्य दो ऐप्स को एकीकृत करने के लिए कोड शामिल है।Django: मैं अपने प्रोजेक्ट urlconf में ऐप-सप्लाई यूआरएल कैसे ओवरराइड कर सकता हूं?
फू एक टेम्पलेट टैग प्रदान करता है जिसे मैं बार द्वारा प्रदान किए गए पृष्ठों में से एक में शामिल करना चाहता हूं। बार के पेज के लिए दृश्य एक वैकल्पिक टेम्पलेट पारित किया जा सकता है। मैं गोंद में एक टेम्पलेट बनाता हूं जो बार के टेम्पलेट को बढ़ाता है और foo से टेम्पलेट टैग भी शामिल करता है। बार के दृश्य में अपना नया टेम्पलेट पास करने के लिए, मुझे urlconf एंट्री को संशोधित करने की आवश्यकता है जो इसे इंगित करता है।
मेरे परियोजना urlconf इस तरह दिखता है: बार में देखने के लिए
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
क्या (उस बात के लिए, या किसी अन्य मनमाना दृश्य तर्क) वैकल्पिक टेम्पलेट पारित करने के लिए सबसे खूबसूरत तरीका है? मैं बार के urlconf को सीधे संशोधित नहीं करना चाहता, क्योंकि यह गोंद पर निर्भर करेगा।
include('bar.urls')
को हटाने का एकमात्र अन्य तरीका है, प्रोजेक्ट urlconf में बार के urlconf में यूआरएल पैटर्न कॉपी करें, और जिस पैटर्न में मुझे रूचि है, उसे संशोधित करें। यह दृष्टिकोण हालांकि DRY सिद्धांत का उल्लंघन करता है। क्या कोई और समाधान है जिसे मैं याद कर रहा हूं?
मैं इस दृष्टिकोण पर ध्यान देंगे, लेकिन यह मैं के लिए काफी क्या देख रहा हूँ नहीं है। क्या होगा अगर मैं दृश्य के लिए किसी अन्य तर्क में गुजरना चाहता हूं? दृश्य urlconf में बुलाया जाता है, इसलिए तर्क को पारित करने के लिए तार्किक स्थान की तरह लगता है। –
आप दृश्य में मनमाना तर्क पारित करना चाहते हैं? कृपया अपने प्रश्न स्पष्ट करें। –
हां, उन तर्कों के समान जो आप urlconf से सामान्य दृश्य में पास करेंगे। –