めっちゃ初歩的な内容です🙇
結論:from . import <モジュール名> で同階層全体を指定できる
from . import views
- 先頭の
.は「このファイルと同じディレクトリ階層」を表します。 - モジュール名を指定するだけで、
views.関数名のようにモジュール名を明示したまま利用できます。
重要: 相対インポートを使うときは、対象ディレクトリがパッケージとして認識されている(__init__.py が置かれている)必要があります。
活用例:Django の urls.py で views.py を読み込む
from django.contrib import admin
from django.urls import path, include
# 同階層の views.py をまとめて読み込む
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>', views.post_detail, name='post_detail'),
]
- URL パターンの第二引数に
views.post_listのように書けるため、「どこから来た関数か」がひと目でわかります。 -
from .views import post_listと個別にインポートすると、URL 定義だけを見たときにモジュールが判別しづらくなります。viewsを残したまま書ける方が読み手に親切です。