自分用メモ。
チュートリアルやった。
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 のカスタマイズ
この後読みたい
- Testing in Django | Django documentation | Django
- Django のテストについてもうちょい詳しく
- Advanced testing topics | Django documentation | Django
- coverage.py と連携してコードカバレッジを表示する方法とか?
- Managing static files (e.g. images, JavaScript, CSS) | Django documentation | Django
- Deploying static files | Django documentation | Django
- static resources の扱いについてもうちょい詳しく
- たぶん本番環境では
django.contrib.staticfiles
が使えなくて、、、という話だと思う。このあたり、Heroku の勉強してた時にも学んだはず
チュートリアルのメモ
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>