読者です 読者をやめる 読者になる 読者になる

気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【Django】1.9チュートリアル実施メモ-part1

Django

Django1.9のチュートリアルの日本語訳版が公開されていたので、 改めて実施することにした。

今まで実施したチュートリアル(1.4)との違いや復習としてのメモを記載する。

今回はチュートリアル1-3までの内容に関するメモ。

さぁ始めましょう。 | Django documentation | Django

apps.pyについて

AppConfigクラスを継承したクラスを記載する

from django.apps import AppConfig
class PollsConfig(AppConfig):
    name = 'polls'

INSTALLED_APPSには、上記Configを指定する

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
]
  • ここは、1.7より前まではアプリ名を指定していた。

マイグレーション

マイグレーションファイルの作成

python manage.py makemigrations polls

マイグレーションSQL確認

python manage.py sqlmigrate polls 0001

マイグレーションの確認

python manage.py check

マイグレーションの適用

python manage.py migrate

manage.pyについて

  • manage.pyでは、DJANGO_SETTINGS_MODULEの環境変数を設定している
  • DJANGO_SETTINGS_MODULE環境変数Djangoに対して、設定ファイルへのimportパスを渡す際に利用される
  • django-admin.py startprojectで作成した時点で、'projectname.settings'が指定されている

timezoneについて

  • よく使う
    • django.utils.timezone
    • datetime
  • 個人的に忘れがち
from django.utils import timezone
import datetime

time = timezone.now()

# 7日前
delta = datetime.timedelta(days=-7)

before_week = time + delta

モデルの属性について

属性 + __yearで年指定

from django.utils import timezone
current_year = timezone.now().year
Question.objects.get(pub_date__year=current_year)

外部キーを張った属性のセット

q = Question.objects.get(pk=1)
# Choiceには、Questionへの外部キーが張られている
q.choice_set.all()

# 外部キー側のオブジェクトを作成
q.choice_set.create(choice_text='hoge', votes=0)

adminサイト

  • フォームは、モデルから自動的に生成される
  • モデルのフィールド型によって、適切なHTML入力ウィジェットが対応している
  • 各フィールドには、Django管理サイトでデータを表示する方法が定義されている

DjangoのURLについて

  • URLパターンは、URLをシンプルに一般化したものである
  • Djangoでは、URLとビューをひもづけるため、URLconfを利用する

urlpatterns

  • プロジェクトフォルダ内のurls.py
from django.conf.urls import url, include

urlpatterns = [
    url(r'polls/', include('polls.urls')),
]

  • アプリケーションのurls.py
from django.conf.urls import url
from . import views

urlpatterns = [
    urls(r'^(?P<object_id>[0-9]+)/resources/$', views.resource, name='resource' ),
]

ビューについて

  • ビューには二つの役割がある
    • リクエストされたコンテンツを含むHttpResponseオブジェクトを返す
    • Http404のような例外の送出

Djangoテンプレートについて

  • アプリケーションフォルダ内に、templatesフォルダを作成する *【Memo:】 (今までDjangoで作ったアプリは、プロジェクトの直下に作成していた気がする
  • DjangoTemplatesの設定ファイルについて、APP_DIRSオプションがTrueに設定されていることにより、INSTALLED_APPSのそれぞれのサブディレクトリにおけるtemplatesフォルダを検索する。
  • アプリケーションが複数ある場合は、URLconfに名前空間を追加する
from django.conf.urls import url
from . import views

name = 'polls'
urlpatterns = [
    urls(r'^(?P<object_id>[0-9]+)/resources/$', views.resource, name='resource' ),
]

チュートリアルのドキュメント

はじめての Django アプリ作成、その 1 | Django documentation | Django

はじめての Django アプリ作成、その2 | Django documentation | Django

はじめての Django アプリ作成、その 3 | Django documentation | Django