PUROGU LADESU

ポエムがメインのブログです。

【Django】チュートリアル1〜2 初期設定、データベース、モデル作成

その1インストール

はじめての Django アプリ作成、その 1 | Django ドキュメント | Django

インストール

pip install django
conda install django

Djangoが入ってるか確認

python -m django --version

プロジェクト

django-admin startproject mysite

アプリ作成

python manage.py startapp polls

ルートの調整

プロジェクトフォルダのurls.pyにアプリのベースurlを追加。
アプリフォルダにurls.pyを新規作成作成。各アクションを追加し、それに応じてviews.pyにも画面を追加。

// 試しにルートにindexアクションを作成
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

settings.pyの調整

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

INSTALLED_APPSに余計な機能があるのならmigrateする前に消すのが良い。

動作確認

python manage.py runserver

その2 データベース等

DB接続

データベースの準備をする。settings.pyにデータベース情報を記載する。

管理テーブル

python manage.py migrateで管理テーブルを作る。

モデルの作成

モデルはmodels.Modelを継承する。

アプリの追加

settings.pyのINSTALLED_APPSに作成したアプリを追加する。
設定する名前はapps.pyのConfigを参照。

マイグレーション実行

python manage.py makemigrations polls
python manage.py migrate polls

APIでデータベース操作をする

python manage.py shell
シェルでdjangoのデータベースAPIを試すことができる。

from polls.models import Choice, Question
Question.objects.all()
q = Question(text="aaaa")
q.save()

Question.objects.get(id=1)
Question.objects.filter(id=1)
Question.objects.filter(text__startswith="aaa")
Question.objects.get(pub_date__year=current_year)

アンダースコア2つでフィールドとメソッドなど結合する。

Question.objects.get(pk=1)

リレーションされてるモデルの取得(1:nのn)

q.choice_set.all()
q.choice_set.create()
q.choice_set.count()

逆もできる

c.question
c.delete()

DjangoAdmin

最低限の管理サイトをモデルを元に自動で作ってくれる。
サイト管理者向けの機能。
管理者ユーザを作成する。

python manage.py createsuperuser

admin.site.register(Question)

まとめ

urls.pyが自動で作成されないのが不親切。
railsに比べてフォルダ構成のかっちり感は無いが、複数のアプリをプラッガブルで作成できること、管理サイトが簡単に用意できることが便利。