2010-01-24 9 views
29

मैं Django में यूआरएल नेमस्पेस के लिए एक अच्छा ट्यूटोरियल की तलाश में हूं। मुझे आधिकारिक दस्तावेज थोड़ा बहुत अस्पष्ट लगता है - इसमें अच्छे उदाहरण नहीं हैं। मुझे यहां स्टैक पर similar question मिला, लेकिन उत्तरों ने मुझे इस विषय को पूरी तरह समझने में मदद नहीं की।कोई भी अच्छा Django यूआरएल नेमस्पेस ट्यूटोरियल जानता है?

+0

क्या आपने https://docs.djangoproject.com/en/1.3/topics/http/urls/#naming-url-patterns में url dispatcer doc की जांच की है, मैं आपको पूरे अनुभाग को पढ़ने के लिए पुनः प्राप्त करता हूं, क्योंकि यदि आप समझते हैं यह कैसे काम करता है इसके बारे में मूल बातें, तो – FallenAngel

+5

@FallenAngel को समझना आसान होगा: मेरा बिंदु अभी भी रहता है - आधिकारिक दस्तावेज़ीकरण में नामस्थानों का उपयोग करने के कोई अच्छे उदाहरण नहीं हैं। – minder

उत्तर

33

सहमत हैं, इसके लिए दस्तावेज़ बल्कि भ्रमित हैं। यहाँ यह की मेरी पढ़ने है (ध्यान दें: सभी कोड अपरीक्षित है!):

apps.help.urls में:

urlpatterns = [ 
    url(r'^$', 'apps.help.views.index', name='index'), 
    ] 

आपका मुख्य urls.py में:

urlpatterns = [ 
    url(r'^help/', include('apps.help.urls', namespace='help', app_name='help')), 
    url(r'^ineedhelp/', include('apps.help.urls', namespace='otherhelp', app_name='help')), 
    ] 

अपने टेम्पलेट में:

{% url help:index %} 

यूआरएल 012 का उत्पादन करना चाहिए।

{% url otherhelp:index %} 

यूआरएल /ineedhelp/ यूआरएल का उत्पादन करना चाहिए।

{% with current_app as 'otherhelp' %} 
    {% url help:index %} 
{% endwith %} 

इसी प्रकार यूआरएल /ineedhelp/ का उत्पादन करना चाहिए।

इसी प्रकार, reverse('help:index')/help/ का उत्पादन करना चाहिए।

reverse('otherhelp:index')/ineedhelp/ का उत्पादन करना चाहिए।

reverse('help:index', current_app='otherhelp') इसी प्रकार /ineedhelp/ का उत्पादन करना चाहिए।

जैसा मैंने कहा था, यह डॉक्सो-भूमि में काम करने के तरीके के साथ दस्तावेज़ों और मेरी मौजूदा परिचितता पर आधारित है। मैंने इसका परीक्षण करने के लिए समय नहीं लिया है।

+0

हमें ऐप_नाम और नामस्थान दोनों सेट क्यों चाहिए? बस सोच रहा था। ऐसा लगता है कि यह app_name –

+0

सेट नहीं करते समय भी काम करता है क्योंकि दस्तावेज़ [मुझे विश्वास था कि वे आवश्यक थे] (https://docs.djangoproject.com/en/1.4/topics/http/urls/#defining-url-namespaces)। भले ही दस्तावेज़ गलत या भ्रामक हैं, भले ही दस्तावेज़ में दस्तावेज़ों के मिलान के लिए भविष्य में व्यवहार में परिवर्तन होने पर दस्तावेज के रूप में 'app_name' शामिल करना अधिक भविष्य-सबूत हो। यदि आप वास्तव में जानना चाहते हैं कि क्यों, आपको कोड पढ़ना होगा। –

+0

अच्छा सुझाव मैं आम तौर पर जितना संभव हो उतना स्रोत पढ़ने की कोशिश करता हूं, लेकिन सीधे संबंधित भाग नहीं ढूंढ सका, कुछ और खुदाई करेगा। एक अच्छे लेख से पहले पढ़ें जो कहता है: स्रोत कभी झूठ नहीं बोलता है, लेकिन मैनुअल कर सकता है। उन्होंने मूल रूप से लोगों को स्रोत पढ़ने के लिए कहा अगर उन्हें कोई समस्या आती है या एपीआई गलत इस्तेमाल किया जाता है। –

0

यह शायद तुम तुम क्या करने कोशिश कर रहे हैं के बारे में अधिक विशिष्ट होना चाहिए डॉक्स

(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')), 

से है।

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