Django プロジェクトがtraining
あり、このプロジェクト内にアプリがありtests
ます。フォルダ構造は次のようになります。
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 プロジェクトでも機能する再利用可能なアプリとしてアプリをパッケージ化したい場合はどうすればよいでしょうか? URL パターンはどうすればよいですか?
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 プロジェクトとは無関係に URL が機能するように、再利用可能なアプリのこの名前空間をどこでどのように定義すればよいですか?