SlideShare a Scribd company logo
使えるDjango1.4
               Django & Pyramid Con 2012
                       @hirokiky




12年9月14日金曜日
使えるDjango1.4

              • おまえだれよ (2m)
              • Django について (24m)
              • Django > 1.0の使えること (19m)

                               Speaker: @hirokiky
12年9月14日金曜日
使えるDjango1.4

              • おまえだれよ
              • Django について
              • Django > 1.0の使えること

                              Speaker: @hirokiky
12年9月14日金曜日
おまえだれよ

          • @hirokiky (清原 弘貴)
          • Weekend Programmer
          • Admin of djangoproject.jp

                                 Speaker: @hirokiky
12年9月14日金曜日
djangoproject.jp




                                          http://djangoproject.jp/
                   https://github.com/django-ja/djangoproject.jp/



                                     Speaker: @hirokiky
12年9月14日金曜日
使えるDjango1.4

              • おまえだれよ
              • Django について
              • Django > 1.0の使えること

                              Speaker: @hirokiky
12年9月14日金曜日
DjangoはPythonで書かれた
          オープンソースのWebフレームワーク




                      Speaker: @hirokiky
12年9月14日金曜日
Django製サイト

              • Disqus
              • Instagram
              • Mozilla
              • bitbucket

                            Speaker: @hirokiky
12年9月14日金曜日
WebServer              request


              Template              URL Dispatcher



      response             View

                          Model

                         DataBase

                                    Speaker: @hirokiky
12年9月14日金曜日
設計思想
              • ルースカップリング
              • コード量の低減
              • 迅速な開発
              • DRY(Don t repeat yourself)則
              • 暗示的より明示的に
              • 一貫性
              http://djangoproject.jp/doc/ja/1.0/misc/design-philosophies.html

                                                Speaker: @hirokiky
12年9月14日金曜日
Djangoの良いところ


              • オブジェクト管理インタフェース
              • フォーム処理ライブラリ
              • 汎用ビュー
                        Speaker: @hirokiky
12年9月14日金曜日
オブジェクト管理インタフェース
                     (Admin)




              • 管理インタフェースが動的に生成される
              • カスタマイズ性が高い

                           Speaker: @hirokiky
12年9月14日金曜日
Demo: Admin (15m)


              • プロジェクト作成 => 管理画面 (10m)
              • django-blog-zinniaの紹介 (5m)

                               Speaker: @hirokiky
12年9月14日金曜日
Read Docs
              and some codes


                      Speaker: @hirokiky
12年9月14日金曜日
使えるDjango1.4

              • おまえだれよ
              • Django について
              • Django > 1.0の使えること

                              Speaker: @hirokiky
12年9月14日金曜日
Django > 1.0

              • project template
              •   <del>Class Based View</del>




                                                Speaker: @hirokiky
12年9月14日金曜日
project template

   • Django>=1.4
   • template of project
              https://docs.djangoproject.com/en/dev/releases/1.4/#custom-project-and-app-templates




                                                        Speaker: @hirokiky
12年9月14日金曜日
project templateで?


              • 特定環境へのデプロイが楽
              • ノウハウをまとめておける


                          Speaker: @hirokiky
12年9月14日金曜日
色々めんどくさい

          • 開発/運用環境の切り分け(DEBUG
          • アプリケーションはproject/appsに置きたい
          • 依存パッケージの記述
          • 設定ファイルに書きたくない情報の扱い
              (SECRET_KEY, PASSWORD


                                 Speaker: @hirokiky
12年9月14日金曜日
これを『テンプレ』化




                    Speaker: @hirokiky
12年9月14日金曜日
使い方
  django-admin.py startproject --template=/path/to/template myproject




         --template=/path/to/template

                                                      ※URLも可


                                            Speaker: @hirokiky
12年9月14日金曜日
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: @hirokiky
12年9月14日金曜日
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: @hirokiky
12年9月14日金曜日
.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: @hirokiky
12年9月14日金曜日
要するに

          django/conf/project_templateの代わりに
          オレオレproject templateが使える




                             Speaker: @hirokiky
12年9月14日金曜日
例: django-skel

   • heroku + S3 環境
   • Django歴4年以上の開発者のノウハウがいっぱい

              https://github.com/rdegges/django-skel

                                 Speaker: @hirokiky
12年9月14日金曜日
Workflow


                  Speaker: @hirokiky
12年9月14日金曜日
開発まえ

              • startproject
              • git init
              • pip install -r reqs/dev.txt
              • sync, migrate, runserver

                                       Speaker: @hirokiky
12年9月14日金曜日
Hack some apps
               (not projects)

                       Speaker: @hirokiky
12年9月14日金曜日
運用まで

              • fab	
  bootstrap

              • heroku	
  config:add

              • heroku	
  scale
              • collectstatic	
  &&	
  compress

                                       Speaker: @hirokiky
12年9月14日金曜日
オツカレチャ━━━━( ́ `)━━━━ン!!!!




                         Speaker: @hirokiky
12年9月14日金曜日
django-skelからノウハウを学ぶ



          • 開発/運用環境の切り分け
          • appsディレクトリ

                     Speaker: @hirokiky
12年9月14日金曜日
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: @hirokiky
12年9月14日金曜日
環境の切り分け


              • 開発、運用環境をうまく切り替えたい
              • settings.DEBUGをハードコードは最悪


                              Speaker: @hirokiky
12年9月14日金曜日
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: @hirokiky
12年9月14日金曜日
apps


              • アプリケーションをいれる
              • import時の名前の衝突を防ぐ


                           Speaker: @hirokiky
12年9月14日金曜日
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: @hirokiky
12年9月14日金曜日
.	
  #	
  ここに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: @hirokiky
12年9月14日金曜日
.	
  #	
  ここに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: @hirokiky
12年9月14日金曜日
project templateで?


              • 特定環境へのデプロイが楽
              • ノウハウをまとめておける


                          Speaker: @hirokiky
12年9月14日金曜日
Django1.4の良さは {% elif %} だけ
                        じゃない




                              Speaker: @hirokiky
12年9月14日金曜日
Announce

      • DjangoSprintやります
      • PyConJP 3日目
      • 自由に
      • http://2012.pycon.jp/program/sprints.html

                               Speaker: @hirokiky
12年9月14日金曜日
以上


               Speaker: @hirokiky
12年9月14日金曜日
Any questions?


                      Speaker: @hirokiky
12年9月14日金曜日
参考資料

              • djangoproject.jp
              • djangoproject.com
              • django-blog-zinnia
              • django-skel

                                     Speaker: @hirokiky
12年9月14日金曜日
なんで Django > 1.0

              • 日本語ドキュメントが長らく1.0
              • Django1.4ドキュメント翻訳作業中
              • django-docs-ja
                    https://github.com/django-docs-ja/django-docs-ja




                                         Speaker: @hirokiky
12年9月14日金曜日

More Related Content

PDF
Useful Django 1.4
PDF
Pylons ユーザのための Pyramid 移行ガイド
PDF
DLR言語によるSilverlightプログラミング
PDF
GoによるWebアプリ開発のキホン
PDF
Dive into the Cloud with our buddy, lovely PHP!
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PDF
H2O and php
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Useful Django 1.4
Pylons ユーザのための Pyramid 移行ガイド
DLR言語によるSilverlightプログラミング
GoによるWebアプリ開発のキホン
Dive into the Cloud with our buddy, lovely PHP!
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
H2O and php
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2

What's hot (18)

PDF
Djangoフレームワークの紹介
PDF
Spring in-summer-gradle-hands on-withanswers
PDF
FuelPHP活用事例
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
PDF
ECMAScript没proposal追悼式
PDF
Pyconjp2014_implementations
PPTX
Python charity talk in japan fastAPI introduction
PDF
Start python with fastapi
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
PDF
ドリコムを支える課金ライブラリを支えるJenkins
PDF
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
PDF
Gradleどうでしょう
PDF
システム開発を前進させるためのGradle導入法
PDF
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
PDF
PHPカンファレンス2014の懇親会飛び込みLT資料
PDF
Javascriptを書きたくないヒ トのためのPythonScript
PDF
ドリコムのインフラCI
Djangoフレームワークの紹介
Spring in-summer-gradle-hands on-withanswers
FuelPHP活用事例
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
ECMAScript没proposal追悼式
Pyconjp2014_implementations
Python charity talk in japan fastAPI introduction
Start python with fastapi
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
ドリコムを支える課金ライブラリを支えるJenkins
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
Gradleどうでしょう
システム開発を前進させるためのGradle導入法
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
Python におけるドメイン駆動設計(戦術面)の勘どころ
PHPカンファレンス2014の懇親会飛び込みLT資料
Javascriptを書きたくないヒ トのためのPythonScript
ドリコムのインフラCI
Ad

Similar to 使えるDjango1.4 (20)

PDF
Golangによるubicの試作
PPTX
210630 python
PDF
PyCon JP 2016 ビギナーセッション
PDF
Djangoとweb2pyをapacheに組込む
PPTX
Go言語ってどんな言語? 導入実績や気になるトレンド
PPTX
130329 perl casual_ruik
KEY
Chiba pm#1 - ArangoDB for Perl
PDF
Hatena blogdevelopmentflow
PPTX
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
PPTX
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
PDF
実践Go ツールの作成から配布まで
PDF
「モダンPerl入門」の入門
PDF
Djangoのススメ
PPTX
RgGen ご紹介
PDF
Go入門
PDF
Testing in Sinatra
PDF
個人で作っているgoのプロダクト by zchee編
PDF
Introduce that Best practices for writing Dockerfiles
PDF
Fuel phpをcomposerに本気で対応させた時の話
Golangによるubicの試作
210630 python
PyCon JP 2016 ビギナーセッション
Djangoとweb2pyをapacheに組込む
Go言語ってどんな言語? 導入実績や気になるトレンド
130329 perl casual_ruik
Chiba pm#1 - ArangoDB for Perl
Hatena blogdevelopmentflow
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
実践Go ツールの作成から配布まで
「モダンPerl入門」の入門
Djangoのススメ
RgGen ご紹介
Go入門
Testing in Sinatra
個人で作っているgoのプロダクト by zchee編
Introduce that Best practices for writing Dockerfiles
Fuel phpをcomposerに本気で対応させた時の話
Ad

More from hirokiky (17)

PDF
簡単な算数でできる文章校正
PDF
エンジニアが起業のアイディアを見つける方法
PDF
それ、公開しちゃおうよ - みんなのPython勉強会63登壇
PDF
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
PDF
営業も広報もいない僕たちが11年間やってきたこと
PPTX
LLoT ランゲージアップデート Python
PDF
How we realized SOA by Python at PyCon JP 2015
PDF
価値を届ける技術 #bpstudy 96
PDF
Pycon2014 django performance
PDF
gargant.dispatch, a flexible dispatcher for WSGI
PDF
Django最速デバッグ指南 PyConAPAC 2013
PDF
軽量のススメ
PDF
django-websettingsの紹介
PDF
pyramid_layoutと僕と、ときどきzope.interface
PDF
My pyhack 1301
PDF
個人の嗜好を学習し記事を推奨するフィードリーダ
PDF
卒研中間発表資料:個人に最適化したフィードリーダの構築
簡単な算数でできる文章校正
エンジニアが起業のアイディアを見つける方法
それ、公開しちゃおうよ - みんなのPython勉強会63登壇
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
営業も広報もいない僕たちが11年間やってきたこと
LLoT ランゲージアップデート Python
How we realized SOA by Python at PyCon JP 2015
価値を届ける技術 #bpstudy 96
Pycon2014 django performance
gargant.dispatch, a flexible dispatcher for WSGI
Django最速デバッグ指南 PyConAPAC 2013
軽量のススメ
django-websettingsの紹介
pyramid_layoutと僕と、ときどきzope.interface
My pyhack 1301
個人の嗜好を学習し記事を推奨するフィードリーダ
卒研中間発表資料:個人に最適化したフィードリーダの構築

使えるDjango1.4

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