Django

【Django】最初にやることの流れ

Django のインストール

現在最新の LTS は 3.2 です。

pip install Django==3.2

2024年4月までサポートされます。

プロジェクトのベース作成

最初に Django に関するフォルダ・ファイル群を生成していきます。

プロジェクトの作成

プロジェクトを作成する | 公式ページ

django-admin startproject testproject .

シェル / ターミナル上で上記のコードを入力するとディレクトリが生成されます。
最後にピリオドつけないと階層が一階層深くなってしまいます。
PyCharm だとサーバーを起動する際に仮想環境の変更が必要になるので注意。

アプリケーションの作成

python manage.py startapp testapp

このとき、生成されたアプリケーションフォルダの中に urls.py を作成しておきます。

templates フォルダの作成

templates フォルダは手動で作ります。
この中に html や css などを入れていきます。

settings.py の編集

バージョンによる BASE_DIR の違い

Django 3.0
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Django 3.2
BASE_DIR = Path(__file__).resolve().parent.parent

バージョンで書き方が違います。
パスの渡し方も変わります。

例えば デフォルトでのデータベースで設定されているパスは下記。

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),  # 3.0
'NAME': BASE_DIR / 'db.sqlite3',               # 3.2.8

3.0 の場合は BASE_DIR + '/db.sqlite3'とかで書いてもよさそうです。

ALLOWED_HOSTS

ALLOWED_HOSTS = ['*']

DEBUG = Trueの場合は必ずこの記載にする、
というチュートリアルもあれば何も設定せずに進むチュートリアルもありました。

INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'testapp.apps.TextappConfig' # 自作アプリの追記
    'testapp' # これだけでも大丈夫っぽい
]

チュートリアルによってここの記載方法が違っていました。
'testapp'のみで進むチュートリアルもあります。公式では上のコードで表記されています。

公式の書き方

'testapp.apps.TextappConfig'に関しては
アプリケーションフォルダのなかにある app.py にこの名前の関数が用意されています。

from django.apps import AppConfig

class TestappConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'testapp'

この関数を読み込んできています。

こちらはアプリケーションフォルダを生成した際に自動で作られているものです。

TEMPLATES

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        'DIRS': [BASE_DIR, 'templates'], # 自作した templates フォルダの追記
        
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

この TEMPLATES の設定はデフォルトでも問題ないようです。
設定するチュートリアルと設定しないチュートリアルがありました。

'APP_DIRS': Trueがあるとデフォルトで直下の templates フォルダを見るようです。
別の名前や階層を指定する際にここを設定するのがよさそうです。

言語コード

必要であれば変更。

LANGUAGE_CODE = 'ja'

タイムゾーン

TIME_ZONE = 'Asia/Tokyo'

アプリケーションサーバの起動

ここまで設定するとアプリケーションサーバを日本語で起動できます。

python manage.py runserver

ターミナルに上記のコードを打つことで起動します。

URL の接続

プロジェクトの urls.py を編集します。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('testapp.urls'))
]

これで admin 以外の URL が指定された場合、アプリケーションの urls.py へ繋がるようになります。

-Django