Django learning

2,023 views
1,911 views

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,023
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
24
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

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!

×