LoginSignup
3
4

More than 1 year has passed since last update.

【Django】個人的に好きなディレクトリ構成と設定方法

Posted at

はじめに

Django のディレクトリ構成を変更したい方は多いかと思います
個人的に下記のようになって欲しいので、その変更方法を共有したいと思います
・JavaScript, css の static ファイルを機能(app)単位でまとめたい
・機能(app)を apps のディレクトリ配下にまとめたい
 → デフォルトでは、ルートディレクトリ直下になっているので、ごちゃっとしている…
・設定ファイル(setting.py等)関係のディレクトリ名を config に変えたい
 → デフォルトでは、サイト名になっている!

下記の環境を想定しています

- django 3.2.10

もくじ

  • 目指すディレクトリ構成
  • setting.py の変更
  • manage.py の変更
  • asgi.py の変更
  • wsgi.py の変更
  • 参考サイト
  • GitHub

目指すディレクトリ構成

app が apps 配下にまとまりスッキリ!!
static ファイルが app ごとに納まっている!!
設定ファイルのディレクトリ名が config に!!

src
│  manage.py
├─apps
│  └─sample
│      │  __init__.py
│      │  apps.py
│      │  urls.py
│      │  views.py
│      ├─static
│      │  └─sample
│      │      ├─css
│      │      │   sample.css
│      │      └─js
│      │           sample.js
│      └─templates
│          └─sample
│               sample.html
└─config
     __init__.py
     asgi.py
     settings.py
     urls.py
     wsgi.py

setting.py の変更

下記の箇所を変更していきます。
※必要な個所のみ抜粋

# インポートを追記
+ import os
+ import sys

# ※下記より「BASE_DIR = Path(__file__).resolve().parent.parent」の記述以降に追記してください

# app を apps 配下にまとめておけるように下記を追記
+ sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

# wsgi の配置を config ディレクトリ配下にするため下記を変更
- WSGI_APPLICATION = 'mysite.wsgi.application'
+ WSGI_APPLICATION = 'config.wsgi.application'

# ルートの urls を config ディレクトリ配下にするため下記を追記
+ ROOT_URLCONF = 'config.urls' # 

# static を app ごとにまとめられるように下記を追記
# 本番環境では static を一纏めにするので切替られるように分岐する
+ if DEBUG == False:
+    STATIC_ROOT = os.path.join(BASE_DIR, 'static')

manage.py の変更

下記の箇所を変更していきます。
※必要な個所のみ抜粋

- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

asgi.py の変更

下記の箇所を変更していきます。
※必要な個所のみ抜粋

- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

wsgi.py の変更

下記の箇所を変更していきます。
※必要な個所のみ抜粋

- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

参考サイト

[Django] プロジェクト構成のベストプラクティスを探る - 1.設定ディレクトリの名前を変更する
Djangoプロジェクト構造のカスタマイズ(分割と構造化)
とほほのDjango入門 (settings.py)
【開発効率up】アプリ開発でおすすめのディレクト

GitHub

ひな形として使えるものを置いておきます
https://github.com/tsk1000/django_seed-docker

おわりに

小~中規模くらいで使った実績があります。
ぶっちゃけその規模ならどんな形になっていようが把握出来るので拘る必要ない気も…
IDEやツールのペインを慣れてる位置に変えちゃう感覚に近いかも!!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4