44
Django 基基 IT 基基基 紗紗紗 基基基基基 #django_learning

Django learning

Embed Size (px)

Citation preview

Page 1: Django learning

Django 基礎IT 寺子屋 紗音寺 ハンズオン

#django_learning

Page 2: Django learning

おまえだれよ@jbking

django-ja, pylons-ja

Django は 0.96 の頃くらいから

Page 3: Django learning

アンケート

• WEB 系の人• PHP でコードを書いたことのある人• Rails でコードを書いたことのある人• Python でコードを書いたことのある人• Python を仕事で使っている人• Django を知ってる人• Django を使ったことのある人• Django を仕事で使っている人

今回の対象

Page 4: Django learning

タイムスケジュール

• 13:00  〜 イントロダクション• 13:30  〜 ハンズオン Part 1

• 14:30  〜 ハンズオン Part 2

• 15:00  〜 ハッカソン

Page 5: Django learning

Django の基礎Welcome to the learning Django the hard way.

Page 6: Django learning

• WEB アプリケーションフレームワーク• メガフレームワーク• だいたい何でも揃ってる• フレームワークから外れると ...

• Rails のようなもの• admin

• MTV パターン

Django の基礎

Page 7: Django learning

MTV?

Controller

Model

View Template

Model

View

!=

Page 8: Django learning

そうなの ?

Page 9: Django learning

MTV?

Template

Model

View

Controller

Page 10: Django learning

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

Admin

Model Admin

Page 11: Django learning

?????

Page 12: Django learning

Controller

• URL ディスパッチ• Rails とかと同じ

• データを表現• ドメインロジックもここ

Model

• モデルを操作• 表示向けデータ作成

View

• 表示向けデータの埋め込み• だいたいの場合 HTML

Template

Page 13: Django learning

MTV?

Template

Model

View

Controller

Page 14: Django learning

• フォームを出力• 入力値の検査

MTV?

Template

Model

View

Form

Model Form

Page 15: Django learning

MTV?

Template

Model

View

Controller

Form

Model Form

Page 16: Django learning

Template

Filter

Tag

• 表示用データの調整

MTV?

Page 17: Django learning

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

Page 18: Django learning

ModelAdmin

Model Admin

• モデルの管理用アプリケーション• キラーアプリ

MTV?

Page 19: Django learning

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

Admin

Model Admin

Page 20: Django learning

Question?

Page 21: Django learning

ハンズオン Part 1つくってみよう

Page 22: Django learning

インストールしてますか? 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

プロジェクト

django-admin.py startproject ${project_name}

cd ${project_name}

chmod +x manage.py

./manage.py help

Page 24: Django learning

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

Admin サイト./manage.py syncdb

./manage.py runserver

Page 26: Django learning

蛇足

IPython or bpython

django_extensions

django-debug-toolbar

Page 27: Django learning

アプリ

./manage.py startapp ${app_name}

open ${project_name}/settings.py INSTALLED_APPS

Page 28: Django learning

モデル

open ${app_name}/models.py

Post モデルの作成

./manage.py syncdb

Page 29: Django learning

Admin サイトへ登録

open ${app_name}/admin.py

PostAdmin の作成admin サイトへ登録admin.site.register(Post, PostAdmin)

Page 30: Django learning

シェルで操作

./manage.py shell

課題 1 Post オブジェクトを取り出す

課題 2 題名 (subject) を変えて保存 (save) する

Page 31: Django learning

表示する

ルーティング作成 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

表示する

ビューの作成 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

モデルを作成する

発展 1 Post を登録できるようにする request.method == ‘POST’ csrf

発展 2 Form を使って入力値をチェックする

発展 3 ModelForm を使ってみる

発展 4 CreateView を使ってビューを書き換える

Page 34: Django learning

ハンズオン Part 2リレーション

Page 35: Django learning

リレーション

Comment モデルの作成 open ${app_name}/models.py

models.ForeignKey(...)

./manage.py syncdb

admin サイトでオブジェクト追加

シェルで確認 comment1.post post1.comment_set.all()

ビューとテンプレートで表示

Page 36: Django learning

フィルタとタグ

発展 1 フィルタとタグを使ってデータの表示を調整する

発展 2 {% url ... %} でオブジェクトを表示するビューへのリンクを埋め込む

発展 3 many-2-many リレーションなモデルを作って表示をする

Page 37: Django learning

まとめ

1. startproject

2. startapp

3. モデル作って確認

4. ビューとかで表示

5. 以下 3 と 4 の繰り返し

Page 38: Django learning

Appendix仕事で使えるようになるには

Page 39: Django learning

テスト

django.test.TestCase

django.test.client.Client

django.test.LiveServerTestCase

settings.py の継承

Page 40: Django learning

運用する

WSGI ランナー mod_wsgi pywsgi gunicorn tornado

マイグレーション South

非同期処理 Celery

Page 41: Django learning

高機能なアプリケーション

全文検索 Haystack

GEO GeoDjango

Admin 改造 Grappelli

CMS django-cms mezzanine

API サーバ request.is_ajax()

認証 / 認可 Authentication

backends

マスター / スレーブ DB Router Multi databases

Page 42: Django learning

コミュニティなど

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

できること、やりたいことが見えてきましたか ?

Page 44: Django learning

Hack-a-thonLet’s hack!