2017-04-14 36 views
1

我是django的新手。我正在嘗試設置網址。我有一個項目'mysite'下的2個應用程序。在urls.py爲mysite的,我已經包括從2個應用程序的URL(稱爲 '登錄' 和 '組織')如何在同一個項目中有多個應用程序時在django中設置url?

mysite的/ urls.py

urlpatterns = [ 
    url(r'^login/', include('login.urls')), 
    url(r'^org/', include('org.urls')), 
] 

登錄/ urls.py

app_name = 'login' 
urlpatterns = [ 
    url(r'^signup/$', login_views.signup, name='signup'), 
] 

組織/ urls.py

app_name = 'org' 
urlpatterns = [ 
    url(r'^organizations/add/$', views.addorg, name='addorg'), 
] 

已經設置它這樣,我的網站網址成爲了以下內容:

site.com/login/login/signup 
site.com/org/organizations/add 

我想讓網址如下所示。

site.com/login/signup 
site.com/organizations/add 

我該如何獲得'includes'的工作?如果我將mysite/urls.py更改爲以下內容,它會起作用嗎?

urlpatterns = [ 
    url(r'^$', include('login.urls')), 
    url(r'^$', include('org.urls')), 
] 

當有多個應用程序時,是否有更好的方法來設置URL?

感謝

回答

0

在您所描述的設置,登錄網址不會'site.com/login/login/signup',但'site.com/login/signup'。第二個'login/'從哪裏來?

你提出的解決方案,

urlpatterns = [ 
    url(r'^$', include('login.urls')), 
    url(r'^$', include('org.urls')), 
] 

一般會工作,如果沒有URL,在這兩個應用程序相同的進行。但它並不理想,因爲登錄賬號中的所有模式都會被不必要地嘗試所有請求。

因此,您可能需要考慮刪除specific_app.urls內部前綴,尤其是如果這些前綴對應用的所有視圖都是相同的。將它留給誰將使用幷包含該應用程序(這裏:mysite.urls)的路徑下,他們希望包含該應用程序。

# login/urls.py 
urlpatterns = [ 
    # no 'login' prefix here. Includers know which app 
    # they are including and how they want do that. 
    url(r'^signup/$', login_views.signup, name='signup'), 
] 

# org/urls.py 
urlpatterns = [ 
    # same: no 'org' prefix 
    url(r'^add/$', views.addorg, name='addorg'), 
] 

# mysite.urls.py 
urlpatterns = [ 
    url(r'^login/$', include('login.urls')), 
    url(r'^organizations/$', include('org.urls')), 
] 

所得網址爲:

site.com/login/signup 
site.com/organizations/add 
+0

謝謝,那工作 – user2125853

2

mysite的/ urls.py

urlpatterns = [ 
    url(r'^login/', include('login.urls')), 
    url(r'^org/', include('org.urls')), 
] 

登錄/ urls.py

app_name = 'login' 
urlpatterns = [ 
    url(r'^signup/$', login_views.signup, name='signup'), 
] 

如果你把你的網址,這樣...

的申請網址將​​site.com/login/signup 的公式是 - [您的網站域名 + 網址main_project /網址。PY + 網址any_app/urls.py]

所以要糾正你的組織的網址 - 你應該重構你的my_site/urls.py爲 -

urlpatterns = [ 
    url(r'^login/', include('login.urls')), 
    url(r'^organizations/', include('org.urls')), 
] 

,並在您機構單位/urls.py應該

app_name = 'org' 
urlpatterns = [ 
    url(r'^add/$', views.addorg, name='addorg'), 
] 

我希望它能幫助。

+1

謝謝。這樣可行。請致電 – user2125853

+0

@ user2125853 upvote。 :) –

+0

謝謝。不知道我可以upvote! – user2125853

相關問題