2017-09-07 54 views
0

我有一個Django項目,具有以下目錄結構:Django的manage.py測試無法看到urls.py,雖然能的runserver

BaseDir 
| manage.py 
| configDir 
\ 
    | settings.py , urls.py, wsgi.py 
|mainApp 
\ 
    |urls.py , views, models etc. 
    | tests 
    \ 
    |urlTest.py 

(如果上面是不明確的,有一個Django配置目錄和mainApp目錄中,mainApp有它自己的urls.py和測試目錄,所有的目錄都與初始化的.py Python模塊)

,如果我跑

manage.py runserver 

我得到了預期的應用程序,因爲它應該在django服務器上運行。

但是運行

manage.py test 

我得到以下

django.urls.exceptions.NoReverseMatch: Reverse for 'index' not found. 'index' is not a valid view function or pattern name. 

測試如下:

[...] 
class TestSth(BaseTest): 
def setUp(self): 
    [some db setup such as users etc] 

def test_get(self): 
    pprint.pprint(reverse('index')) 

配置/ urls.py是:

from django.conf.urls import url, include 
from django.contrib import admin 

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

mainApp/urls.py是:

from django.conf.urls import url 
from . import views 
from django.contrib.auth import views as auth_views 
app_name = 'app' 

urlpatterns = [ 
    #/app/ 
    url(r'^$', views.IndexView.as_view(), name='index'), 
    [...] 

可有人建議我在做什麼錯?這並沒有太大的意義

回答

2

你已經宣佈mainApp/urls.py的APP_NAME,所以你需要使用的反向調用:

pprint.pprint(reverse('app:index')) 
+0

這樣做,謝謝 – ndp

1

NoReverseMatch異常是由django.urls時提出根據提供的參數無法識別URLconf中的匹配URL。

你也應該在urlConf參數傳遞給reverse功能

reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)

From the docs

URL配置參數是一個包含URL模式 使用逆轉URL配置模塊。默認情況下,使用當前 線程的根URLconf。

+0

非常感謝,它必須是簡單的東西! – ndp

相關問題