2012-06-13 201 views
0

我目前正在通過Django Tutorial (Step 3)的方式工作,並陷入了「Decoupling the URLconfs」部分。使用INCLUDE時,Django的URL模式無法按預期工作

我試圖做的是設置一個URL模式,捕獲lnadmin /,重定向到django管理員,最終另一個捕獲所有重定向到其他文件包含的其他模式。

這裏是我的mysite/urls.py:

from django.conf.urls import patterns, include, url 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 

url(r'^lnadmin/', include(admin.site.urls)), #match admin 
url(r'^test/', include('lnapp.urls')), #match test, should be a catch-all later 
) 

和這裏的lnapp/urls.py,這是爲了匹配散列/(任何)/:

from django.conf.urls import patterns, include, url 

urlpatterns = patterns('lnapp.views', 
    url(r'^hash/(?P<hash>.+)/$', 'hash'), #match part to load from hash 
) 

我有這個在之前的主要url.py模式中,它按預期工作。 現在發生的事情是,當我打開(mydomain)/ lnadmin /時,它會嘗試訪問lnapp.views.hash(無法導入lnapp.views.hash,因爲沒有定義視圖)。

這對我沒有任何意義,因爲lnadmin /應該與第一個模式匹配,並且/ lnadmin /不匹配test/hash /(任何)/。只要我註釋掉lnapp/urls.py中的一個url,就會按照預期重定向到管理員。

在主url.py中交換兩個網址都沒有效果。

回答

0

我自己的問題的答案是:你必須定義一個視圖,即使對於不匹配的URL,否則它將失敗。