dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Djangoのチュートリアルが終わった後に読みたいもの

自分用メモ。
チュートリアルやった。
https://docs.djangoproject.com/en/1.9/intro/

コード https://github.com/zaki-yama/django1.9-tutorial

チュートリアルの中でいくつか Further Reading 的なドキュメント(いずれも公式ドキュメント)が紹介されてたのでメモ。

チュートリアル概要

  • part1
    • project, app の作成とディレクトリ構成について
    • 一番基本的なビュー作成
  • part2
    • データベースの設定
    • モデルからデータベーススキーマを作成する方法
    • 管理画面 (admin site)
  • part3
    • 基本的なビューの書き方
    • データベースからレコードを取得してビューにレンダリングする基本的な手順
    • テンプレートのしくみ
  • part4
    • フォームの作成
    • generic views (Class-based View) の使用
  • part5
  • part6
    • CSS, 画像などの静的リソース (static resources) の扱い
  • part7
    • admin site のカスタマイズ


この後読みたい




チュートリアルのメモ

part2
$ python manage.py makemigrations [app]

[app]/migrations ディレクトリにマイグレーション用のファイル (0001_initial.py とか) を作成して

$ python manage.py migrate

で DB に反映してくれる。

実行される SQL を確認したい場合は

$ python manage.py sqlmigrate [app] 0001

などとする。これは migrate を行った時に実行される SQL を表示してくれるだけで実際の DB への影響はない。

$ python manage.py shell

インタラクティブシェルを起動できる。

part3

(ポイント1)

アプリケーション固有のテンプレートは

[app]/templates/[app]/index.html

というようなディレクトリ構成にすると良い。

(ポイント2)

アプリケーション毎の URLConf には app_name を指定して Namespace をつける。
また、URL にはそれぞれ URL 名を指定しておくとテンプレート側でハードコーディングせずに済む。

(urls.py)

app_name = 'polls'
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
    # 略

(index.html)

<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>