ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
エラーの意味
Djangoのurls.pyでURLパターンを書く際に、include()という関数を呼び出しています。しかし、そのincludeという名前がどこからも読み込まれていない(定義されていない)ため、Pythonが「そんな名前は知らない」と判断して次のエラーを出します。
NameError: name 'include' is not defined |
つまりこれは、include()を使う前に その関数をimport(読み込み)し忘れている という、典型的なimport漏れのエラーです。Django固有の難しい不具合ではなく、Pythonの基本的なルール(使う名前は事前に定義・import しておく)に沿った素直なエラーです。
原因
下のように、urls.pyでinclude()を呼んでいるのに、includeをimportする行が書かれていません。
# myproject/urls.py(NG例:include を import していない) from django.urls import path # ← path はあるが include が無い
urlpatterns = [ path('blog/', include('blog.urls')), # ← ここで NameError ] |
よくあるパターンは次のとおりです。
- import行を書き忘れた:
pathだけimportして、後からinclude()を追記したときにincludeを足し忘れた。 - import元を間違えた:チュートリアルやサンプルのバージョンが古く、
django.conf.urlsやdjango.urlsのどちらから読み込むべきか食い違っている。 - 綴り・大文字小文字の誤り:
Include(先頭大文字)など、import名と呼び出し名が一致していない。
解決方法
urls.pyの先頭に、includeを含むimport文を追加します。2026年時点で標準的に使われているDjango 2.0以降では、pathと同じくdjango.urlsから読み込みます。pathも一緒に書いておくのが定番です。
# Django 2.0 以降(現在の推奨) from django.urls import include, path |
これでエラーは解消します。pathもまだimportしていなければ、上記のように1行でまとめてimportできます。
一方、Django 1.x系(古いプロジェクト)では、includeは次のようにdjango.conf.urlsから読み込みます。古い書籍・記事・既存コードを参考にしている場合はこちらになります。
# Django 1.x 系(古い書き方) from django.conf.urls import include, url |
| バージョン | include の import 元 | 主なURL関数 |
|---|---|---|
| Django 2.0 以降(現行) | from django.urls import include, path | path / re_path |
| Django 1.x 系(旧) | from django.conf.urls import include, url | url(正規表現ベース) |
自分のDjangoバージョンが分からない場合は、ターミナルで次のコマンドを実行して確認できます。
python -m django --version |
正しい urls.py のコード例
多くの場合、include()は「プロジェクト側のurls.pyから、各アプリのurls.pyを取り込む(include する)」目的で使います。下は、プロジェクト直下のurls.pyで、blogアプリとaccountsアプリのURL定義を取り込む例です。
# myproject/urls.py(プロジェクト側) from django.contrib import admin from django.urls import include, path
urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), # blog アプリの URL を取り込む path('accounts/', include('accounts.urls')), ] |
取り込まれる側、たとえばblogアプリのurls.pyは次のようになります。こちら側ではincludeは不要で、pathだけをimportすれば十分です。
# blog/urls.py(アプリ側) from django.urls import path from . import views
urlpatterns = [ path('', views.index, name='index'), path('<int:post_id>/', views.detail, name='detail'), ] |
この構成だと、ブラウザで /blog/ にアクセスするとblogアプリのindexビューが、/blog/5/ にアクセスするとdetailビュー(post_id=5)が呼ばれます。プロジェクト側で'blog/'という接頭辞を付け、アプリ側はそれ以降のパスだけを担当する、という役割分担になっています。
補足:path / re_path とアプリ分割の意味
path:URLを分かりやすい記法で書ける関数です。<int:post_id>のように型を指定して値を受け取れます。通常はこちらを使います。re_path:正規表現でURLを定義したいときに使う関数で、from django.urls import re_pathでimportします。複雑なパターンマッチが必要な場合のみ使用します。include()の役割:URL定義をアプリごとのファイルに分割し、それをプロジェクト側でまとめて取り込むための関数です。これにより、1つの巨大なurls.pyを避けて、機能(アプリ)単位でURLを管理できます。アプリが増えても見通しが良くなり、再利用もしやすくなります。
落とし穴・注意点
| つまずきポイント | 対処 |
|---|---|
| import を書く場所が間違っている import文は urls.pyのファイル先頭に書きます。関数の中やurlpatternsの後ろに書くと意図通り動きません。 | 他のimport文と並べて、ファイルの一番上にまとめて記述します。 |
| Djangoバージョンでimport元が違う Django 2.0以降は django.urls、1.x系はdjango.conf.urlsです。古いサンプルをそのまま貼ると別のエラーになることがあります。 | 自分のバージョンをpython -m django --versionで確認し、上の対応表に合わせます。現行プロジェクトならdjango.urlsです。 |
urlpatterns の綴りミスurlpattern(s 抜け)やurl_patternsなどにすると、URLが一切認識されません。 | 変数名は必ずurlpatterns(複数形・アンダースコア無し)にします。 |
include の綴り・大文字小文字Includeやinculdeなど、importした名前と呼び出し名がずれていると同じエラーが出ます。 | すべて小文字のincludeで統一します。 |
よくある質問(FAQ)
Q. 'path' is not defined や 're_path' is not defined も出ました。
A. 原因はまったく同じで、その関数をimportしていないためです。from django.urls import include, path, re_path のように、使う関数をすべてimportに含めれば解決します。
Q. アプリ側のurls.pyにもincludeのimportは必要ですか?
A. アプリ側でinclude()を使っていなければ不要です。includeは基本的に「他のurls.pyを取り込む側」で使う関数なので、末端のアプリではpathのimportだけで十分です。
Q. from django.conf.urls import include と書いたら別の警告やエラーが出ました。
A. それはDjango 1.x系向けの古い書き方です。Django 2.0以降ではdjango.conf.urlsからのimportは非推奨・廃止されている部分があり、url関数も削除されています。現行バージョンではfrom django.urls import include, path を使ってください。
Q. importを追加したのにまだエラーが消えません。
A. 編集しているurls.pyのファイルが正しいか(プロジェクト側かアプリ側か)、保存できているか、開発サーバーを再起動したかを確認してください。複数のurls.pyがある場合、別のファイルでもinclude()を使っていて、そちらにimport漏れが残っていることがあります。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- Invalid HTTP_HOST header: '...'. You may need to add '...' to ALLOWED_HOSTS
- CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
- django.utils.datastructures.MultiValueDictKeyError
- Forbidden (403) CSRF verification failed. Request aborted.
- ModuleNotFoundError: No module named 'MySQLdb'
- WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection
- Unknown column 'table_name.id' in 'field list'
- RuntimeError: Model class ~ doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
- get() returned more than one MynumberRegist -- it returned 2!
- django.db.utils.OperationalError: (2006, "Can't connect to MySQL server")
- 'include' is not defined
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?