Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Django基礎
IT寺子屋 紗音寺 ハンズオン
#django_learning
おまえだれよ
@jbking
django-ja, pylons-ja
Djangoは0.96の頃くらいから
アンケート
• WEB系の人
• PHPでコードを書いたことのある人
• Railsでコードを書いたことのある人
• Pythonでコードを書いたことのある人
• Pythonを仕事で使っている人
• 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
Model
Form
Filter
Tag
Admin
Model
Admin
?????
Controller
• URLディスパッチ
• Railsとかと同じ
• データを表現
• ドメインロジックもここ
Model
• モデルを操作
• 表示向けデータ作成
View
• 表示向けデータの埋め込み
• だいたいの場合HTML
Te...
MTV?
Template
Model
View
Controller
• フォームを出力
• 入力値の検査
MTV?
Template
Model
View
Model
Form
MTV?
Template
Model
View
Controller
Model
Form
Template
Filter
Tag
• 表示用データの調整
MTV?
MTV?
Template
Model
View
Controller
Model
Form
Filter
Tag
Model
Admin
Model
Admin
• モデルの管理用アプリケーション
• キラーアプリ
MTV?
MTV?
Template
Model
View
Controller
Model
Form
Filter
Tag
Admin
Model
Admin
Question?
ハンズオン Part 1
つくってみよう
 インストールしてますか?
 Nitrous.io https://www.nitrous.io/join/hea6JcleeFc
 ドキュメントを読みましょう
 https://docs.djangoproject.com/en/1....
プロジェクト
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/', in...
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...
表示する
 ビューの作成
 open ${app_name}/views.py
 list_posts
 {'posts': Post.objects.order_by('updated_at').reverse().all()}
 ...
モデルを作成する
 発展1 Postを登録できるようにする
 request.method == ‘POST’
 csrf
 発展2 Formを使って入力値をチェックする
 発展3 ModelFormを使ってみる
 発展4 Crea...
ハンズオン Part 2
リレーション
リレーション
 Commentモデルの作成
 open ${app_name}/models.py
 models.ForeignKey(...)
 ./manage.py syncdb
 adminサイトでオブジェクト追加
 シェ...
フィルタとタグ
 発展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.i...
コミュニティなど
 Django-ja http://djangoproject.jp/
 Python mini Hack-a-thon
http://connpass.com/series/14/
 PyCon APAC http:/...
できること、やりたいことが見えてきましたか?
Hack-a-thon
Let’s hack!
Upcoming SlideShare
Loading in …5
×

Django learning

  • Be the first to comment

Django learning

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

×