はじめてのDjango チュートリアル②

年末は、なかなか進められなかった

 

  • Dockerの業務に力を入れていた

  • 退職とかの引継ぎとか

 

また、マシーンをほぼ初期から動かすことになったので環境諸々の設定が最初からで億劫だった…

kindleとかでPythonの言語の勉強などはしていた

そして、年始からはインフルエンザに数年ぶりに罹って死にそうだった  

docs.djangoproject.com

データベースの設定

  • mysite/settings.pyでデータベース情報を記載するようだ
  • あらかじめ諸々入ってるみたい(不要なものは外してくれって書いてる)
django.contrib.admin - 管理(admin)サイト。まもなく使います
django.contrib.auth - 認証システム
django.contrib.contenttypes - コンテンツタイプフレームワーク
django.contrib.sessions - セッションフレームワーク
django.contrib.messages - メッセージフレームワーク
django.contrib.staticfiles - 静的ファイルの管理フレームワーク

postgresのinstall、起動とデータベース作成

  • sqlite3はあれなんでpostgresqlを使用することにした
  • 本番デプロイとかを視野にいれるとMySQLPostgreSQLが候補になるんじゃないだろうか
  • settingでdb情報変更
$ python manage.py migrate

modelの作成

投票アプリでは、質問と選択の2つのモデルを作成します。質問には、質問と発行日があります。選択肢には、選択肢のテキストと投票集計の2つのフィールドがあります。各選択肢は質問に関連付けられています。

  • polls/models.pyにモデル情報を記載していく
from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
  • ここでは、各モデルはdjango.db.models.Modelをサブクラス化するクラスによって表される。各モデルには多数のクラス変数があり、それぞれがモデル内のデータベースフィールドを表す。
  • ForeignKey を使用してリレーションをしているとのこと
    • リレーションする場合、on_deleteを設定する(CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()、DO_NOTHING)

モデルを有効にする

  • mysite/settings.pyにモデル情報に追加する
$ python manage.py makemigrations polls

apiで遊んで見る

  • なるほどちょっとよく分からない

管理画面の作成

  • Djangoの最も良いところの一つなんじゃないだろうか

    管理ユーザ作成

$ python manage.py createsuperuser