django 多站點urls配置

2021-06-01 07:02:40 字數 2603 閱讀 6053

應用程式基於多個django站點,應該考慮到urlconfig包含【include】的方式來處理urls。

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^weblog/', include('mysite.blog.urls')),

(r'^photos/', include('mysite.photos.urls')),

(r'^about/$', 'mysite.views.about'),

) 重要的地方:指向 include() 的正規表示式並不包含乙個 $ (字串結尾匹配符),但是包含了乙個斜桿。每當 django 遇到 include() 時,它將截斷匹配的url,並把【剩餘】的字串發往被包含的 urlconf 作進一步處理。 

被包含的 urlconf mysite.blog.urls :

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^(\d\d\d\d)/$', 'mysite.blog.views.year_detail'),

(r'^(\d\d\d\d)/(\d\d)/$', 'mysite.blog.views.month_detail'),

) 當請求:/weblog/2011/ 時,首先是 (r'^weblog/', include('mysite.blog.urls'))匹配/weblog/ , 由於使用include,正則停止匹配,並將 2011/傳送到mysite.blog.urls中;

(r'^(\d\d\d\d)/$', 'mysite.blog.views.year_detail') 可以匹配 2011/ ,於是將執行 mysite.blog.views.year_detail 檢視,並傳遞引數 2011

乙個被包含的urlconf 接收任何來自parent urlconfs 的**獲的引數,比如:

# root urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^(?p\w+)/blog/', include('foo.urls.blog')),

) # foo/urls/blog.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^$', 'foo.views.blog_index'),

(r'^archive/$', 'foo.views.blog_archive'),

) 在這個例子中,**獲的 username 變數將傳遞給被包含的 urlconf,進而傳遞給那個

urlconf 中的 每乙個 檢視函式。

注意,這個**獲的引數 總是 傳遞到被包含的urlconf 中的 每一 行,不管那些行對應的

檢視是否需要這些引數。因此,這個技術只有在你確實需要那個被傳遞的引數的時候才顯得

有用。

相似的,你可以傳遞額外的 urlconf 選項到 include() , 就像你可以通過字典傳遞額外的urlconf 選項到普通的檢視。當你這樣做的時候,被包含 urlconf 的 每一 行都會收那些額外的引數。 比如,下面的兩個 urlconf 在功能上是相等的。

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^blog/', include('inner'), ),

) # inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^archive/$', 'mysite.views.archive'),

(r'^about/$', 'mysite.views.about'),

(r'^rss/$', 'mysite.views.rss'),

) # urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^blog/', include('inner')),

) # inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^archive/$', 'mysite.views.archive', ),

(r'^about/$', 'mysite.views.about', ),

(r'^rss/$', 'mysite.views.rss', ),

) 這個例子和前面關於**獲的引數一樣(在上一節就解釋過這一點),額外的選項將 總是傳遞到被包含的 urlconf 中的 每一 行,不管那一行對應的檢視是否確實作為有效引數接這些選項,因此,這個技術只有在你確實需要那個被傳遞的額外引數的時候才顯得有用。

django 多站點urls配置

目錄 包含其他 urlconf 捕獲的引數如何和include協同工作 額外的urlconf如何和include協同工作 應用程式基於多個django站點,應該考慮到urlconfig包含 include 的方式來處理urls。from django.conf.urls.defaults impor...

django學習 urls配置

urls的配置分為三步 1 增加urls對映 2 在views中定義模板函式 3 定義新模板 一 首先建立乙個新的工程 1 django admin.py startproject study urls 二 編寫test urls包裡的視 件views 1 定義了乙個時間函式和姓名函式 時間模版函式...

Django配置站點

hosts檔案涉及的dns解析 1.找到hosts檔案 windows c windows system32 drivers etc hosts mac linux etc hosts 2.在host檔案中新增下面兩句話,檔案修改許可權自己解決 127.0.0.1 www.luffy.cn 127....