2011-10-11 104 views
1

我想在我的主要網址中包含一個額外的urls.py - 但它似乎並沒有工作。我已經做了一堆搜索的,我似乎無法弄清楚Django,urls.py,包括似乎沒有工作

主要urls.py文件 - 管理工作正常

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

from django.contrib import admin 
admin.autodiscover() 

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

然後我有一個文件夾pnasser,與文件的URL .py與以下內容:

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

urlpatterns = patterns('pnasser.views', 
     (r'^$','index'), 
     (r'^login/$','login'), 
     (r'^signup/$','signup'), 
     (r'^insertaccount/$','insertaccount'), 
     (r'^home/$','home'), 
     (r'^update/(?P<accid>\d+)','update'), 
     (r'^history/(?P<accid>\d+)','account_history'), 
     (r'^logout/(?P<accid>\d+)','logout'), 

) 

我不知道如果我可能缺少配置中的其他東西。如果我訪問mysite.com/admin它正確加載的管理員,如果我轉到mysite的或我收到404找不到網頁的意見的任何其他網址:

使用mysite.urls定義的URL配置,Django的這些嘗試URL 模式,順序如下:1。 ^ pnasser/ 2 ^管理員/

當前的URL,不符合任何這些。

編輯 settings.py安裝的應用程序:

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    #'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    # Uncomment the next line to enable the admin: 
    'django.contrib.admin', 
    # Uncomment the next line to enable admin documentation: 
    # 'django.contrib.admindocs', 
     'pnasser', 

) 

更新2

所以,我也試圖通過開發服務器上運行我的網站:python manage.py runserver 0.0.0.0:8000這個作品。我假設我與apache的整合使用mod_wsgi是一個問題。但是,我不確定問題出在哪裏

+0

是否存在pnasser的urls.py中引用的所有視圖?我似乎記得#django中的某個人遇到了問題... – eternicode

+0

存在所有視圖 – Prescott

+1

我剛剛在應用中執行了相同的確切url方案。我唯一的區別是我沒有'r',只是'(「^」,include(「app.urls」)),'試試?應該修復lullis提到的斜線問題。 ([前綴在SO解釋](http://stackoverflow.com/questions/2241600/python-regex-r-prefix)) –

回答

3

的問題似乎是在django.wsgi文件 - 和標準django.wsgi文件如何加載蟒蛇網站VS開發服務器如何加載該網站的差異。我想這是一個衆所周知的問題,我不知道。感謝大家的建議。

替代django.wsgi文件在這裏找到:http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

+0

現在它是否工作?如果沒有,請嘗試停止然後啓動您的apache服務器。使用重新啓動命令時,我的網址和設置都沒有馬上更新。但停下來似乎有所幫助。 –

+0

對不起,不得不等待一天才能回答。我確實必須啓動並重新啓動 – Prescott

+0

如何爲未來用戶提供類似問題的鏈接? – beerbajay

0
Using the URLconf defined in mysite.urls, Django tried these 
URL patterns, in this order: 

此錯誤消息應列出所有可能的URL,包括pnasser應用程序中的「擴展」URL。由於您只能從主要的urls.py獲取網址,因此建議您沒有在settings.py的INSTALLED_APPS中正確啓用pnasser應用。

+0

它似乎在那裏 - 除非我在這裏做錯了什麼。我已經編輯了我的問題以包含Installed_apps變量 – Prescott

1
from django.contrib import admin,include 
admin.autodiscover() 

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

也許你在第一線

1

錯過「包括:」問題是,您使用的是空的正則表達式("^"將匹配任何東西,包括一個空的URL)來處理include指令。如果你這樣做,它總會在你的請求路徑上附加第一個斜槓。考慮到你的pnasser.urls不包含「/」的正則表達式,在mysite.com上沒有匹配的請求。

如果你想mysite.com或mysite.com/帶你去pnasser 「指數」 來看,你需要有這樣的:

from django.contrib import admin 

from pnasser.views import index 

admin.autodiscover() 


urlpatterns = patterns('', 
    (r'^/?$', index), 
    (r'^pnasser/',include('pnasser.urls')), 
    (r'^admin/',include(admin.site.urls)), 
) 

所以,你必須:

  • mysite.com => pnasser.views.index
  • mysite.com/ => pnasser.views.index
  • mysite.com/admin =>管理頁面
  • mysite.com/pnasser/ => pnasser.views.index
  • mysite。COM/pnasser /家=> pnasser.views.home

如果這不起作用,請確保您已安裝Django's CommonMiddleware,讓你有APPEND_SLASH = True(它是默認的,所以你不應該需要如果你沒有在你的settings.py文件中找到它,就要弄亂它)。

0

在您的URL文件中,您可以編寫如下所示的內容。 + =顯然允許我們爲'urlpatterns'變量添加額外的'模式',這也意味着我們可以將它們包裝在'if'語句中。

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

urlpatterns += patterns('', 
    (r'^api/', include('api.urls')), 
) 

if settings.SHOP_TOGGLE: 
    urlpatterns += patterns('', 
     (r'^shop/', include('shop.urls')),) 
    )