僕がデータ分析者として覚醒するまで

しがない会社員がデータ分析者として覚醒するまでのブログ

Memo:[Django]バージョンによるurls.py内のincludeの仕様の違い

概要

Urlディスパッチャの記述でハマった。

問題

DjangoのTutorialでは、下記のようにしなければならなかった。

urlpatterns = [
    url(r'^testapp/', include('testapp.urls', namespace='testapp')),
]

新しいDjango上記を写経すると下記のエラーがでる。(Django==2.0.3を使用)

    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-タプルで渡してね。ってことみたい。

urlpatterns = [
    url(r'^testapp/', include(('testapp.urls', 'testapp'),)),
]