django learning
TRANSCRIPT
![Page 1: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/1.jpg)
Django 基礎IT 寺子屋 紗音寺 ハンズオン
#django_learning
![Page 2: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/2.jpg)
おまえだれよ@jbking
django-ja, pylons-ja
Django は 0.96 の頃くらいから
![Page 3: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/3.jpg)
アンケート
• WEB 系の人• PHP でコードを書いたことのある人• Rails でコードを書いたことのある人• Python でコードを書いたことのある人• Python を仕事で使っている人• Django を知ってる人• Django を使ったことのある人• Django を仕事で使っている人
今回の対象
![Page 4: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/4.jpg)
タイムスケジュール
• 13:00 〜 イントロダクション• 13:30 〜 ハンズオン Part 1
• 14:30 〜 ハンズオン Part 2
• 15:00 〜 ハッカソン
![Page 5: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/5.jpg)
Django の基礎Welcome to the learning Django the hard way.
![Page 6: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/6.jpg)
• WEB アプリケーションフレームワーク• メガフレームワーク• だいたい何でも揃ってる• フレームワークから外れると ...
• Rails のようなもの• admin
• MTV パターン
Django の基礎
![Page 7: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/7.jpg)
MTV?
Controller
Model
View Template
Model
View
!=
![Page 8: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/8.jpg)
そうなの ?
![Page 9: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/9.jpg)
MTV?
Template
Model
View
Controller
![Page 10: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/10.jpg)
MTV?
Template
Model
View
Controller
Form
Model Form
Filter
Tag
Admin
Model Admin
![Page 11: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/11.jpg)
?????
![Page 12: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/12.jpg)
Controller
• URL ディスパッチ• Rails とかと同じ
• データを表現• ドメインロジックもここ
Model
• モデルを操作• 表示向けデータ作成
View
• 表示向けデータの埋め込み• だいたいの場合 HTML
Template
![Page 13: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/13.jpg)
MTV?
Template
Model
View
Controller
![Page 14: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/14.jpg)
• フォームを出力• 入力値の検査
MTV?
Template
Model
View
Form
Model Form
![Page 15: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/15.jpg)
MTV?
Template
Model
View
Controller
Form
Model Form
![Page 16: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/16.jpg)
Template
Filter
Tag
• 表示用データの調整
MTV?
![Page 17: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/17.jpg)
MTV?
Template
Model
View
Controller
Form
Model Form
Filter
Tag
![Page 18: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/18.jpg)
ModelAdmin
Model Admin
• モデルの管理用アプリケーション• キラーアプリ
MTV?
![Page 19: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/19.jpg)
MTV?
Template
Model
View
Controller
Form
Model Form
Filter
Tag
Admin
Model Admin
![Page 20: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/20.jpg)
Question?
![Page 21: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/21.jpg)
ハンズオン Part 1つくってみよう
![Page 22: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/22.jpg)
インストールしてますか? Nitrous.io https://www.nitrous.io/join/
hea6JcleeFc
ドキュメントを読みましょう https://docs.djangoproject.com/en/1.5/ http://docs.djangoproject.jp/ja/latest/
コード https://github.com/jbking/django_learning.git
下準備
![Page 23: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/23.jpg)
プロジェクト
django-admin.py startproject ${project_name}
cd ${project_name}
chmod +x manage.py
./manage.py help
![Page 24: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/24.jpg)
Admin サイトopen ${project_name}/urls.py
# from django.contrib import admin
# admin.autodiscover()
# url(r'^admin/', include(admin.site.urls)),
open ${project_name}/settings.py
'ENGINE': 'django.db.backends.sqlite3’
'NAME': 'my.db',
# 'django.contrib.admin’,
![Page 25: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/25.jpg)
Admin サイト./manage.py syncdb
./manage.py runserver
![Page 26: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/26.jpg)
蛇足
IPython or bpython
django_extensions
django-debug-toolbar
![Page 27: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/27.jpg)
アプリ
./manage.py startapp ${app_name}
open ${project_name}/settings.py INSTALLED_APPS
![Page 28: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/28.jpg)
モデル
open ${app_name}/models.py
Post モデルの作成
./manage.py syncdb
![Page 29: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/29.jpg)
Admin サイトへ登録
open ${app_name}/admin.py
PostAdmin の作成admin サイトへ登録admin.site.register(Post, PostAdmin)
![Page 30: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/30.jpg)
シェルで操作
./manage.py shell
課題 1 Post オブジェクトを取り出す
課題 2 題名 (subject) を変えて保存 (save) する
![Page 31: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/31.jpg)
表示する
ルーティング作成 open ${app_name}/urls.py
list_posts url( 正規表現パターン , ビュー , *args, **kwargs)
ルーティングの登録 open ${project_name}/urls.py
from ${app_name} import urls.py url(r’’, include(urls)),
![Page 32: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/32.jpg)
表示する
ビューの作成 open ${app_name}/views.py
list_posts {'posts':
Post.objects.order_by('updated_at').reverse().all()}
テンプレートの作成 open
${app_name}/templates/${app_name}/list_posts.html {% for post in posts %} {{ post.subject }}
![Page 33: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/33.jpg)
モデルを作成する
発展 1 Post を登録できるようにする request.method == ‘POST’ csrf
発展 2 Form を使って入力値をチェックする
発展 3 ModelForm を使ってみる
発展 4 CreateView を使ってビューを書き換える
![Page 34: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/34.jpg)
ハンズオン Part 2リレーション
![Page 35: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/35.jpg)
リレーション
Comment モデルの作成 open ${app_name}/models.py
models.ForeignKey(...)
./manage.py syncdb
admin サイトでオブジェクト追加
シェルで確認 comment1.post post1.comment_set.all()
ビューとテンプレートで表示
![Page 36: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/36.jpg)
フィルタとタグ
発展 1 フィルタとタグを使ってデータの表示を調整する
発展 2 {% url ... %} でオブジェクトを表示するビューへのリンクを埋め込む
発展 3 many-2-many リレーションなモデルを作って表示をする
![Page 37: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/37.jpg)
まとめ
1. startproject
2. startapp
3. モデル作って確認
4. ビューとかで表示
5. 以下 3 と 4 の繰り返し
![Page 38: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/38.jpg)
Appendix仕事で使えるようになるには
![Page 39: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/39.jpg)
テスト
django.test.TestCase
django.test.client.Client
django.test.LiveServerTestCase
settings.py の継承
![Page 40: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/40.jpg)
運用する
WSGI ランナー mod_wsgi pywsgi gunicorn tornado
マイグレーション South
非同期処理 Celery
![Page 41: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/41.jpg)
高機能なアプリケーション
全文検索 Haystack
GEO GeoDjango
Admin 改造 Grappelli
CMS django-cms mezzanine
API サーバ request.is_ajax()
認証 / 認可 Authentication
backends
マスター / スレーブ DB Router Multi databases
![Page 42: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/42.jpg)
コミュニティなど
Django-ja http://djangoproject.jp/
Python mini Hack-a-thon http://connpass.com/series/14/
PyCon APAC http://apac-2013.pycon.jp/ja/
![Page 43: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/43.jpg)
できること、やりたいことが見えてきましたか ?
![Page 44: Django learning](https://reader035.vdocuments.net/reader035/viewer/2022062319/5560b42dd8b42afe3b8b486a/html5/thumbnails/44.jpg)
Hack-a-thonLet’s hack!