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.

使えるDjango1.4

4,453 views

Published on

Django の概要と、最新の『使える』情報を紹介。 Djangoを全く知らない人や、Django1.0以降を知らない人が対象です。

Djangoの魅力はもちろん、最新のDjango1.4で登場した「project template」についても紹介します。

他にもDjangoに関する情報の集め方、調べ方についても紹介します。 「チュートリアルやったけど、これからどうすれば…」という方の助けになります。

この発表を聞けば、きっと無駄な苦労なしにプロジェクトを完成させられます。

  • Be the first to comment

使えるDjango1.4

  1. 1. 使えるDjango1.4 Django & Pyramid Con 2012 @hirokiky12年9月14日金曜日
  2. 2. 使えるDjango1.4 • おまえだれよ (2m) • Django について (24m) • Django > 1.0の使えること (19m) Speaker: @hirokiky12年9月14日金曜日
  3. 3. 使えるDjango1.4 • おまえだれよ • Django について • Django > 1.0の使えること Speaker: @hirokiky12年9月14日金曜日
  4. 4. おまえだれよ • @hirokiky (清原 弘貴) • Weekend Programmer • Admin of djangoproject.jp Speaker: @hirokiky12年9月14日金曜日
  5. 5. djangoproject.jp http://djangoproject.jp/ https://github.com/django-ja/djangoproject.jp/ Speaker: @hirokiky12年9月14日金曜日
  6. 6. 使えるDjango1.4 • おまえだれよ • Django について • Django > 1.0の使えること Speaker: @hirokiky12年9月14日金曜日
  7. 7. DjangoはPythonで書かれた オープンソースのWebフレームワーク Speaker: @hirokiky12年9月14日金曜日
  8. 8. Django製サイト • Disqus • Instagram • Mozilla • bitbucket Speaker: @hirokiky12年9月14日金曜日
  9. 9. WebServer request Template URL Dispatcher response View Model DataBase Speaker: @hirokiky12年9月14日金曜日
  10. 10. 設計思想 • ルースカップリング • コード量の低減 • 迅速な開発 • DRY(Don t repeat yourself)則 • 暗示的より明示的に • 一貫性 http://djangoproject.jp/doc/ja/1.0/misc/design-philosophies.html Speaker: @hirokiky12年9月14日金曜日
  11. 11. Djangoの良いところ • オブジェクト管理インタフェース • フォーム処理ライブラリ • 汎用ビュー Speaker: @hirokiky12年9月14日金曜日
  12. 12. オブジェクト管理インタフェース (Admin) • 管理インタフェースが動的に生成される • カスタマイズ性が高い Speaker: @hirokiky12年9月14日金曜日
  13. 13. Demo: Admin (15m) • プロジェクト作成 => 管理画面 (10m) • django-blog-zinniaの紹介 (5m) Speaker: @hirokiky12年9月14日金曜日
  14. 14. Read Docs and some codes Speaker: @hirokiky12年9月14日金曜日
  15. 15. 使えるDjango1.4 • おまえだれよ • Django について • Django > 1.0の使えること Speaker: @hirokiky12年9月14日金曜日
  16. 16. Django > 1.0 • project template • <del>Class Based View</del> Speaker: @hirokiky12年9月14日金曜日
  17. 17. project template • Django>=1.4 • template of project https://docs.djangoproject.com/en/dev/releases/1.4/#custom-project-and-app-templates Speaker: @hirokiky12年9月14日金曜日
  18. 18. project templateで? • 特定環境へのデプロイが楽 • ノウハウをまとめておける Speaker: @hirokiky12年9月14日金曜日
  19. 19. 色々めんどくさい • 開発/運用環境の切り分け(DEBUG • アプリケーションはproject/appsに置きたい • 依存パッケージの記述 • 設定ファイルに書きたくない情報の扱い (SECRET_KEY, PASSWORD Speaker: @hirokiky12年9月14日金曜日
  20. 20. これを『テンプレ』化 Speaker: @hirokiky12年9月14日金曜日
  21. 21. 使い方 django-admin.py startproject --template=/path/to/template myproject --template=/path/to/template ※URLも可 Speaker: @hirokiky12年9月14日金曜日
  22. 22. template ├──  fabfile.py ├──  gunicorn.py.ini ├──  manage.py ├──  Procfile ├──  reqs │      ├──  common.txt templateはこんな感じ │      ├──  dev.txt │      └──  prod.txt ├──  requirements.txt (ディレクトリ) ├──  project_name │      ├──  apps │      │      └──  __init__.py │      ├──  __init__.py │      ├──  libs │      │      └──  __init__.py │      ├──  settings │      │      ├──  common.py │      │      ├──  dev.py │      │      ├──  __init__.py │      │      └──  prod.py │      ├──  templates │      │      ├──  404.html │      │      └──  500.html │      └──  urls.py └──  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  23. 23. template ├──  fabfile.py ├──  gunicorn.py.ini ├──  manage.py ├──  Procfile ├──  reqs │      ├──  common.txt templateはこんな感じ │      ├──  dev.txt │      └──  prod.txt ├──  requirements.txt (ディレクトリ) ├──  project_name │      ├──  apps │      │      └──  __init__.py │      ├──  __init__.py プロジェクト名に │      ├──  libs │      │      └──  __init__.py │      ├──  settings 置き換わる │      │      ├──  common.py │      │      ├──  dev.py │      │      ├──  __init__.py │      │      └──  prod.py │      ├──  templates │      │      ├──  404.html │      │      └──  500.html │      └──  urls.py └──  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  24. 24. .pyファイルも if  __name__  ==  "__main__":        os.environ.setdefault("DJANGO_SETTINGS_MODULE",  "{{  project_name  }}.settings.dev")        from  django.core.management  import  execute_from_command_line        execute_from_command_line(sys.argv) • project_name • project_directory • secret_key • あと自由にオプションで Speaker: @hirokiky12年9月14日金曜日
  25. 25. 要するに django/conf/project_templateの代わりに オレオレproject templateが使える Speaker: @hirokiky12年9月14日金曜日
  26. 26. 例: django-skel • heroku + S3 環境 • Django歴4年以上の開発者のノウハウがいっぱい https://github.com/rdegges/django-skel Speaker: @hirokiky12年9月14日金曜日
  27. 27. Workflow Speaker: @hirokiky12年9月14日金曜日
  28. 28. 開発まえ • startproject • git init • pip install -r reqs/dev.txt • sync, migrate, runserver Speaker: @hirokiky12年9月14日金曜日
  29. 29. Hack some apps (not projects) Speaker: @hirokiky12年9月14日金曜日
  30. 30. 運用まで • fab  bootstrap • heroku  config:add • heroku  scale • collectstatic  &&  compress Speaker: @hirokiky12年9月14日金曜日
  31. 31. オツカレチャ━━━━( ́ `)━━━━ン!!!! Speaker: @hirokiky12年9月14日金曜日
  32. 32. django-skelからノウハウを学ぶ • 開発/運用環境の切り分け • appsディレクトリ Speaker: @hirokiky12年9月14日金曜日
  33. 33. django-­‐skel ├──  fabfile.py ├──  gunicorn.py.ini ├──  manage.py ├──  Procfile ├──  reqs │      ├──  common.txt │      ├──  dev.txt │      └──  prod.txt ├──  requirements.txt ├──  project_name │      ├──  apps django-skel │      │      └──  __init__.py │      ├──  __init__.py │      ├──  libs のレイアウト │      │      └──  __init__.py │      ├──  settings │      │      ├──  common.py │      │      ├──  dev.py │      │      ├──  __init__.py │      │      └──  prod.py │      ├──  templates │      │      ├──  404.html │      │      └──  500.html │      └──  urls.py └──  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  34. 34. 環境の切り分け • 開発、運用環境をうまく切り替えたい • settings.DEBUGをハードコードは最悪 Speaker: @hirokiky12年9月14日金曜日
  35. 35. django-skelでは? ├──  settings │      │      ├──  __init__.py │      │      ├──  common.py │      │      ├──  dev.py │      │      └──  prod.py • 開発のみの設定はdev、運用はprod、共通がcommon • heroku  config:add   DJANGO_SETTINGS_MODULE={{  project_name  }}.settings.prod Speaker: @hirokiky12年9月14日金曜日
  36. 36. apps • アプリケーションをいれる • import時の名前の衝突を防ぐ Speaker: @hirokiky12年9月14日金曜日
  37. 37. django-­‐skel ├──  fabfile.py ├──  gunicorn.py.ini ├──  manage.py ├──  Procfile ├──  reqs │      ├──  common.txt │      ├──  dev.txt │      └──  prod.txt ├──  requirements.txt ├──  project_name │      ├──  apps django-skelのここ │      │      └──  __init__.py │      ├──  __init__.py │      ├──  libs │      │      └──  __init__.py │      ├──  settings │      │      ├──  common.py │      │      ├──  dev.py │      │      ├──  __init__.py │      │      └──  prod.py │      ├──  templates │      │      ├──  404.html │      │      └──  500.html │      └──  urls.py └──  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  38. 38. .  #  ここにpath |-­‐-­‐  aggregator |      |-­‐-­‐  __init__.py |      |-­‐-­‐  blog.py apps無しの例 |      |-­‐-­‐  models.py |      |-­‐-­‐  tests.py |      `-­‐-­‐  views.py |-­‐-­‐  blog • aggregator.viewsで |      |-­‐-­‐  __init__.py |      |-­‐-­‐  models.py |      |-­‐-­‐  tests.py • from blog.models import Entry |      `-­‐-­‐  views.py |-­‐-­‐  manage.py `-­‐-­‐  myprj        |-­‐-­‐  __init__.py        |-­‐-­‐  settings.py        |-­‐-­‐  urls.py • ImportError        `-­‐-­‐  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  39. 39. .  #  ここにpath |-­‐-­‐  apps |      |-­‐-­‐  __init__.py |      |-­‐-­‐  aggregator |      |      |-­‐-­‐  __init__.py そこでapps |      |      |-­‐-­‐  blog.py |      |      |-­‐-­‐  models.py |      |      |-­‐-­‐  tests.py |      |      `-­‐-­‐  views.py |      `-­‐-­‐  blog |              |-­‐-­‐  __init__.py |              |-­‐-­‐  models.py |              |-­‐-­‐  tests.py |              `-­‐-­‐  views.py |-­‐-­‐  manage.py • from apps.blog.model import Entry `-­‐-­‐  myprj        |-­‐-­‐  __init__.py        |-­‐-­‐  settings.py        |-­‐-­‐  urls.py        `-­‐-­‐  wsgi.py Speaker: @hirokiky12年9月14日金曜日
  40. 40. project templateで? • 特定環境へのデプロイが楽 • ノウハウをまとめておける Speaker: @hirokiky12年9月14日金曜日
  41. 41. Django1.4の良さは {% elif %} だけ じゃない Speaker: @hirokiky12年9月14日金曜日
  42. 42. Announce • DjangoSprintやります • PyConJP 3日目 • 自由に • http://2012.pycon.jp/program/sprints.html Speaker: @hirokiky12年9月14日金曜日
  43. 43. 以上 Speaker: @hirokiky12年9月14日金曜日
  44. 44. Any questions? Speaker: @hirokiky12年9月14日金曜日
  45. 45. 参考資料 • djangoproject.jp • djangoproject.com • django-blog-zinnia • django-skel Speaker: @hirokiky12年9月14日金曜日
  46. 46. なんで Django > 1.0 • 日本語ドキュメントが長らく1.0 • Django1.4ドキュメント翻訳作業中 • django-docs-ja https://github.com/django-docs-ja/django-docs-ja Speaker: @hirokiky12年9月14日金曜日

×