django learning

Post on 24-May-2015

1.492 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

#django_learning

おまえだれよ@jbking

django-ja, pylons-ja

Django は 0.96 の頃くらいから

アンケート

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

今回の対象

タイムスケジュール

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

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

• 15:00  〜 ハッカソン

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

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

• Rails のようなもの• admin

• MTV パターン

Django の基礎

MTV?

Controller

Model

View Template

Model

View

!=

そうなの ?

MTV?

Template

Model

View

Controller

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

Admin

Model Admin

?????

Controller

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

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

Model

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

View

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

Template

MTV?

Template

Model

View

Controller

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

MTV?

Template

Model

View

Form

Model Form

MTV?

Template

Model

View

Controller

Form

Model Form

Template

Filter

Tag

• 表示用データの調整

MTV?

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

ModelAdmin

Model Admin

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

MTV?

MTV?

Template

Model

View

Controller

Form

Model Form

Filter

Tag

Admin

Model Admin

Question?

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

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

下準備

プロジェクト

django-admin.py startproject ${project_name}

cd ${project_name}

chmod +x manage.py

./manage.py help

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’,

Admin サイト./manage.py syncdb

./manage.py runserver

蛇足

IPython or bpython

django_extensions

django-debug-toolbar

アプリ

./manage.py startapp ${app_name}

open ${project_name}/settings.py INSTALLED_APPS

モデル

open ${app_name}/models.py

Post モデルの作成

./manage.py syncdb

Admin サイトへ登録

open ${app_name}/admin.py

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

シェルで操作

./manage.py shell

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

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

表示する

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

表示する

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

モデルを作成する

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

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

発展 3 ModelForm を使ってみる

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

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

リレーション

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

models.ForeignKey(...)

./manage.py syncdb

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

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

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

フィルタとタグ

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

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

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

まとめ

1. startproject

2. startapp

3. モデル作って確認

4. ビューとかで表示

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

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

テスト

django.test.TestCase

django.test.client.Client

django.test.LiveServerTestCase

settings.py の継承

運用する

WSGI ランナー mod_wsgi pywsgi gunicorn tornado

マイグレーション South

非同期処理 Celery

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

全文検索 Haystack

GEO GeoDjango

Admin 改造 Grappelli

CMS django-cms mezzanine

API サーバ request.is_ajax()

認証 / 認可 Authentication

backends

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

コミュニティなど

Django-ja http://djangoproject.jp/

Python mini Hack-a-thon http://connpass.com/series/14/

PyCon APAC http://apac-2013.pycon.jp/ja/

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

Hack-a-thonLet’s hack!

top related