我有一個Django項目,training
而這個項目,tests
內的應用程序。文件夾結構如下所示:Django的可重複使用的應用程序URL命名空間的問題
django-training
tests
urls.py
training
urls.py
裏面training/urls.py
我已經定義了這種模式:
url(r'^tests/', include('tests.urls', namespace='tests'))
而且裏面tests/urls.py
我有這些模式定義:
url(r'^$', index, name='index'),
url(r'^(\d+)/$', view, name='view'),
url(r'^give-up/$', give_up, name='give_up'),
url(r'^(\d+)/result/$', result, name='result')
,一切工作正常。
但是,如果我要打包的應用程序tests
作爲可重複使用的應用程序,在任何Django項目的工作是什麼?我應該如何處理網址格式?
我創建了一個tests/settings.py
文件,並將ROOT_URLCONF
config var更改爲指向tests/urls.py
。但是,這是行不通的,因爲這個錯誤會出現:
Traceback (most recent call last):
File "/home/user/.virtualenvs/clean2/local/lib/python2.7/site-packages/tests/tests.py", line 173, in testContext
response = self.client.get(reverse('tests:view', args=(1,)))
File "/home/user/.virtualenvs/clean2/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 492, in reverse
key)
NoReverseMatch: u'tests' is not a registered namespace
的錯誤是相當的邏輯,因爲reverse
需要定義命名空間(tests
,這是)。
我的問題是:如何和我在哪裏應界定這個命名空間的可重複使用的應用程序,讓網址將工作獨立於應用程序安裝在Django項目的?
我們可以看到您的反向函數調用? –
@GamesBrainiac我添加了錯誤的完整回溯,包括函數調用。 – linkyndy