2011-09-28 14 views
40

मैं django के लिए काफी नया हूं लेकिन विभिन्न ढांचे के साथ पाइथन और जावा वेब प्रोग्रामिंग में अनुभव किया है। मैंने खुद को एक अच्छा छोटा django ऐप बनाया है, लेकिन मुझे लगता है कि यह www.mysite.com/myapp के विपरीत www.mysite.com से मेल नहीं खाता है।Django URLS, ऐप को रूट कैसे करें?

मैंने अपने urls.conf में यूआरएल और विचारों को परिभाषित किया है जो वर्तमान में ऐप से decoupled नहीं है (इसे ध्यान में रखें)।

urlpatterns = patterns('myapp.views', 
    (r'^myapp/$', 'index'), 
    (r'^myapp/(?P<some_id>\d+)/global_stats/$', 'global_stats'), 
    (r'^myapp/(?P<some_id>\d+)/player/(?P<player_id>\d+)/$', 'player_stats'), 
) 

यह सब एक आकर्षण की तरह काम करता है। अगर कोई www.mysite.com/myapp पर जाता है तो वे मेरे इंडेक्स व्यू को हिट करेंगे जो http को मेरे "सही" डिफ़ॉल्ट यूआरएल पर रीडायरेक्ट करता है।

तो, मैं एक पैटर्न कैसे जोड़ सकता हूं जो (आर '^ myapp/$', 'अनुक्रमणिका') के समान होगा लेकिन बिना/myapp के - www.mysite.com पर्याप्त होना चाहिए?

मैं इस बहुत ही बुनियादी सामान होगा लगता होगा ... मैं की तरह एक लाइन जोड़ने की कोशिश की:

(r'^$', 'index'), 

लेकिन यह मेरे एक पाश में फेंकता है ...

आशा है कि आप वहाँ गुरु django मेरे लिए यह स्पष्ट कर सकते हैं!

उत्तर

53

यह अजीब लगता है।

आपका नवीनतम प्रयास से काम करना चाहिए, लेकिन क्या मैं सामान्य रूप से करते हैं - डाल

urlpatterns = patterns('', 
    (r'^$', lambda r: HttpResponseRedirect('myapp/')), 
    ... 
) 

यह बेहतर मापता है जब आप नए ऐप्लिकेशन जोड़ने शुरू करते हैं।

+0

खैर, कुछ कारण से इस काम करता है, और मेरी समस्या का समाधान नहीं करता है :) – Hoof

+0

यदि आप मुझे अपने न्यूनतम ऐप के साथ gzip भेजते हैं तो मैं देख सकता हूं कि इसमें क्या गलत है। बीटीडब्लू, मेरी अलग फाइल से: urlpatterns = पैटर्न ('common.views', url ('^ $', 'home', name = 'home'), ...), ठीक है – Guard

+0

यह बहुत अच्छा है, क्योंकि यह सुनिश्चित करता है कि उपयोगकर्ता ऐप के लिए वास्तविक/'सही' यूआरएल पर समाप्त होता है, बजाय चुपचाप यह मूल रूप से रूट पर स्थित है। –

4

बस एक खाली कच्चे नियमित अभिव्यक्ति डाल: r ''

मैं यहाँ परीक्षण किया है और यह पूरी तरह से काम किया।

urlpatterns = patterns('', 
    url(r'', include('homepage.urls')), 
    url(r'^homepage/', include('homepage.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

आशा है कि यह मदद करे!

+2

टेम्पलेट में हेल्पर्स से उत्पन्न कोई भी यूआरएल काम नहीं करता है अगर आप इसे इस तरह से करते हैं :( – jrwren

91

मुझे पता है कि इस सवाल का 2 साल पहले कहा गया था, लेकिन मैं एक ही समस्या का सामना करना पड़ा है और एक समाधान मिल गया है:

परियोजना urls.py में:

urlpatterns = patterns('', 
    url(r'^', include('my_app.urls')), #NOTE: without $ 
) 

my_app.urls.py में:

urlpatterns = patterns('', 
    url(r'^$', 'my_app.views.home', name='home'), 
    url(r'^v1/$', 'my_app.views.v1', name='name_1'), 
    url(r'^v2/$', 'my_app.views.v2', name='name_2'), 
    url(r'^v3/$', 'my_app.views.v3', name='name_3'), 
) 
+1

ग्रेट! Django पर काम करता है 1.8 – fabrigm

+1

डीजेंगो पर बहुत अच्छा काम 1.9 भी – Amir

+1

परफेक्ट! Django के साथ एक आकर्षण की तरह काम करता है 1.8.4 – Frankline

0

मुझे पता है कि उत्तर देर हो चुकी है, लेकिन मेरे पास हाल ही में शिकार का मेरा उचित हिस्सा था। यह हमेशा नाम स्थान का उपयोग करने के लिए सिफारिश की है: यह क्या मैं urls.py

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', include('app_name.urls', namespace='app_name')), 
] 

पुनश्च परियोजना में CBV .. साथ करने की कोशिश की है। बाद में एक अच्छा फायदा देता है। इस के साथ इतना बीमार छड़ी !! -

अनुप्रयोग urls.py

urlpatterns = [ 
    url(r'^$', views.IndexPageView.as_view(), name='index'), 
] 
संबंधित मुद्दे