Django Tutorial Memo
概要
Urlディスパッチャの記述でハマった。
問題
旧DjangoのTutorialでは、下記のようにしなければならなかった。
old_version
urlpatterns = [
url(r'^testapp/', include('testapp.urls', namespace='testapp')),
]
新しいDjangoで上記を写経すると下記のエラーがでる。(Django==2.0.3を使用)
Error
url(r'^testapp/', include('testapp.urls', namespace='testapp')),
File "C:\Users\****\PycharmProjects\Tutorial\venv\lib\site-packages\django\urls\conf.py", line 39, in include
'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured:
Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
'Specifying a namespace in include() without providing an app_name '
Googleさん:'app_nameを指定せずにinclude()で名前空間を指定する'
解決策
新Django(Django==2.0.3)では、下記のようにすることでエラーをはかなくなった。
要するに、namespaceでapp_nameを指定するのではなく、2-タプルで渡してね。ってことみたい。
new_version
urlpatterns = [
url(r'^testapp/', include(('testapp.urls', 'testapp'),)),
]