Morghen Lethe

プログラミングの備忘録、趣味の事とか書いていきます。

【Django】ワークフローのメモ

django-admin startproject XXXX

で、プロジェクト作成後のフロー。

  1. アプリケーションの作成
  2. モデル作成(models)・有効化とマイグレーション(Migration)
  3. URL設定(urls.py)・ルーティング
  4. ビュー(views.py)の作成
  5. テンプレート(templates)の作成
  6. 静的ファイル(static files)の作成と配置

アプリケーションの作成

①コンソールで下記コマンドを実行する。

python manage.py startapp XXXX

※XXXXは任意の名称を入れる。

モデル作成(models)・有効化とマイグレーション(Migration)

①models.pyにクラスを作成する。

class XXXX(models.Model):
    title = models.CharField(max_length=255)
    text = models.TextField()
    author = models.ForeignKey(
        'auth.User',
        on_delete=models.CASCADE,
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

※XXXXは任意の名称を入れる。

②モデルの有効化
プロジェクト設定ファイル YYYY/settings.py (※YYYYはプロジェクト名) のINSTALLED_APPSに下記を追加する。

INSTALLED_APPS = [
    'XXXX.apps.XXXXConfig', # 追加
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

※XXXXはアプリケーション名。
※XXXXConfigは、該当アプリケーション内のapps.pyのクラス名を入れる。

from django.apps import AppConfig

class XXXXConfig(AppConfig):
    name = 'ZZZZ'

その後に下記コマンドを実行する。

python manage.py makemigrations XXXX

※XXXXはアプリケーション名。
makemigrationsを実行することで、Djangoにモデルに変更があったこと(この場合、新しいものを作成しました)を伝え、そして変更を マイグレーションの形で保存する。
migrationsフォルダ内に0000_initial.pyのようなファイルが作成されている。
下記コマンドを実行すると、SQL文を確認することが出来る。 python manage.py sqlmigrate XXXX 0001

マイグレーション
下記コマンドを実行する。

python manage.py migrate

これで、モデルのテーブルをデータベースに作成できる。
makemigrationsで作成したファイルは消える。

URL設定(urls)・ルーティング

作成したアプリケーションにURL設定を行う。
設定ファイルが無い場合は、urls.pyを新規作成する。
````python:urls.py

作成例

from django.urls import path from . import views

app_name = 'XXXX'

urlpatterns = [ # ここにURL情報を入れていく ] ```` app_nameにはapps.pyに記載したnameと同じ名称を入れれば良いと思う。

ビュー(views)の作成

views.pyに作成するページ(URL)分のクラスとかを設定する。

テンプレート(templates)の作成

templatesフォルダ内にページ分のhtmlファイルを作成する。

静的ファイル(static files)の作成と配置

cssとかjsファイルがあれば、作成する。
配置はstaticフォルダ(フォルダ名は任意)とかを作成して、その中に入れる。
そして、プロジェクト設定ファイル YYYY/settings.py (※YYYYはプロジェクト名) の中に下記を追加する。

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]  # './static'

以上