Djangoのincludeの仕様が変っていてハマったのでメモ

DjangoはPythonのフレームワークです。Qiitaに投稿されていたDjango入門を写経していて、さっそくつまづきましたので自分用にもメモ。

エラーの元になったのは下記の部分。プロジェクトのurls.pyの中でincludeを使ってルーティングする部分です。

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

URLのルーティングをする際、includeというのを使います。どうもここの仕様が変わっているようです。

サーバには下記のようなエラーが出ていました。

Specifying a namespace in django.conf.urls.include() without providing an app_name is deprecated. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead

そこで、いろいろ調べたら答えはこちらのブログで見つけました。>メモ的思考的な

さっきの部分を下記のように修正すると正常に動作しました。

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

ポイントはnamespaceを使わないこと。それと、includeの一つ目の引数としてカッコでくくって渡すこと。

以上、同じところでつまづいた方のお役にたったら。最近のチュートリアルでもこの部分は治ってなかったり、同じところで困っている人は多いかも。自分へのメモとして。