Python Django 入門トップページ


このページは Django version 3 系の情報です.新たな version 4 系の情報はこちらからどうぞ.

Django によるコメント掲示板の開発:目次

  1. プロジェクトの作成
  2. Git でコミット
  3. Web サーバを起動しておく
  4. Config
  5. Comments アプリケーションを作る
  6. はじめてのビューを作成する
  7. モデルを作る
  8. アプリケーションを有効にする
  9. マイグレーション
  10. テストデータの設定
  11. データベースからコメント一覧を取得して表示してみよう
  12. Bootstrap の導入
  13. コメントの詳細表示
  14. urls.pyの書き方
  15. HTML のテンプレート化
  16. コメントの新規投稿
  17. コメントの編集機能を追加する
  18. さらにテンプレート化
  19. モデル,マイグレーションファイル,フォームの関連
  20. 入力内容の検証(バリデーション)
  21. コメントを削除する
  22. 一覧を逆順にする
  23. ページネーション
  24. フラッシュメッセージ
  25. Static コンテンツの設置
  26. 更新や削除にもフラッシュメッセージを表示
  27. テストの自動化を実現しよう
  28. デバッグツールバーを使う
  29. generic モジュールを使わずにコメント一覧を取得する
  30. コメント一覧のページネーション
  31. 一覧の表示順序を制御する
  32. generic モジュールを使わずにコメントの詳細を表示する
  33. コメント詳細にページ送り機能を作成する
  34. generic モジュールを使わずにコメント登録機能を作成する
  35. generic モジュールを使わずにコメント編集機能を作成する
  36. generic モジュールを使わずにコメント削除機能を作成する

Django によるコメント掲示板の開発

urls.pyの書き方

以前のページで urls.py には複数の書き方があることについて言及した.ここではその詳細を確認しておく.まず次の「書き方1」では,3行目で from . import views によって views.py モジュールを読み込んでいる.しかしながら views.py モジュールを読み込んでいるだけであるので,views.py で定義されている CommentIndexView クラス(あるいは views.py で定義された関数)を呼び出すためには,7行目のように views.CommentIndexView と記述しなければならない.

comments/urls.py(書き方1)
from django.urls import path

from . import views

app_name = 'comments'
urlpatterns = [
    path('', views.CommentIndexView.as_view(), name='index'),
    path('<int:pk>/', views.ShowCommentView.as_view(), name='show'),
]

CommentIndexView を利用するたびに views. をつけることが面倒であれば,次の「書き方2」のように from .views import CommentIndexView, ShowCommentView 書いて,views. を省略することもできる.しかしながら,7, 8行目のように url を追加するたびに3行目にも追加をする必要があるので注意が必要である.

comments/urls.py(書き方2)
from django.urls import path

from .views import CommentIndexView, ShowCommentView

app_name = 'comments'
urlpatterns = [
    path('', CommentIndexView.as_view(), name='index'),
    path('<int:pk>/', ShowCommentView.as_view(), name='show'),
]

さらに,次の「書き方3」のようにするとかなり省力化が可能になる.しかしながらこのような書き方は非推奨である.なぜなら,複数のモジュールで同じ名前のクラス(や関数)があると意図しないクラス(や関数)が呼び出される可能性があるからである.

comments/urls.py(書き方3)
from django.urls import path

from .views import *

app_name = 'comments'
urlpatterns = [
    path('', CommentIndexView.as_view(), name='index'),
    path('<int:pk>/', ShowCommentView.as_view(), name='show'),
]

なお,この資料では今後「書き方1」を用いることとする.またさらなる詳細はここを参照してください.

目次に戻る