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 1.9

Django 1.9で追加されたメジャー機能の紹介
(だいたい)新卒エンジニア向け技術交流会 vol.5

  • Login to see the comments

Django 1.9

  1. 1. Django 1.9 OMEGA(@equal_001)
  2. 2. お前誰よ ・OMEGA (@equal_001) ・株式会社ビープラウド ・Python, Djangoの開発メイン ・バイク乗りプログラマです ・バイクはいいぞ〜! ・東京モータショーで試乗したMT-25が意外とよかった
  3. 3. 今日はDjangoの話をします
  4. 4. その前に
  5. 5. いやぁ、PHP7が出ましたね!
  6. 6. Twitterとか記事サイトみてると、 結構盛り上がってたみたいじゃないの
  7. 7. ところで
  8. 8. みなさん知ってましたか?
  9. 9. Django 1.9 がリリースされました!/
  10. 10. リリース日が2日しか違わないのに フレームワークと言語は違うのはわかるが、僕は悲しい
  11. 11. まぁ、気をとりなおして
  12. 12. 今日は Django 1.9で どんな機能が追加されたか 紹介していくよ!
  13. 13. まずはどんなものが追加されたか チェックチェック!
  14. 14. メジャー機能の説明だけで 許してください 死んでしまいます
  15. 15. 主な追加機能(目次) ● performing actions after a transaction commit ● password validation. ● Permission mixins for class-based views. ● running tests in parallel. ・Python 3.5 が使える
  16. 16. Performing actions after a transaction commit
  17. 17. Performing actions after a transaction commit ● トランザクションが正常にコミットされた後に実行するアクションのフックが追加され た ● rollbackされた場合はdo_something()は呼び出されない
  18. 18. Password validation
  19. 19. Password validation ● パスワードのいろんなバリデーション機能がDjango側でできるようになった ○ defalutは []、設定しなければ全てのパスワードは受理される
  20. 20. Password validation:UserAttributeSimilarityValidator ● Userの入力したパスワードが、username, first_name, last_name, email と類似 しているかどうかを検証 ● 内部実装 ○ passwordとその他のvalueをlower()で全て小文字へ ○ SequenceMatcherで文字列を比較、quick_ratio()でシーケンスの同一性を測る ○ 類似性が見られた場合、エラーメッセージを返す
  21. 21. Password validation:CommonPasswordValidator ● よくあるパスワードのリスト.txt を作っておいて、それらと一致したらエラー出す ● 内部実装 ○ common-passwords.txt.gzを解凍・file openして、リストに保持 ○ 入力されたパスワード .lower()が「よくあるパスワードリスト」のどれかと一致したらエラー送出 ○ "This password is too common."とかでる
  22. 22. Password validation:MinimumLengthValidator、NumericPasswordValidator ● パスワードの最小の長さを設定できる ● 地味に嬉しい ○ 今まで、if len(password) < 9: とかやってた ● formsに書くべきなのでは?とか思った ○ Validationするformsとの役割分担、切り分けとか ● 数値のみでパスワードが構成されているかどうかをチェック
  23. 23. Permission mixins for class-based views
  24. 24. Permission mixins for class-based views ● Django-bracesにあるアクセス制御関連と似た機能を追加したよという話 ○ Django-braces・・・DjangoのClassBasedViewで使えるMixin集 ● 今まではdecoratorを作ったり、Django-bracesを入れてやっていたことがDjango 側でできるようになった ○ requestを受け取ってViewに処理を渡す前に、アクセス権限のチェックとか ● 今回追加されたMixin ○ AccessMixin ○ LoginRequiredMixin ○ PermissionRequiredMixin ○ UserPassesTestMixin
  25. 25. Permission mixins for class-based views:LoginRequiredMixin ● LoginRequiredMixin ○ 非認証ユーザをログインページ または 403ページ へリダイレクトする ● Userのis_activeはチェックしないんだって。。
  26. 26. Permission mixins for class-based views:PermissionRequiredMixin ● PermissionRequiredMixin ○ ビューにアクセスするユーザが指定の権限を持っているかチェックする ○ 権限のないユーザの取り扱いをまとめてカスタマイズできる
  27. 27. Running tests in parallel
  28. 28. Running tests in parallel ● 別のプロセスで平行してテストを実行できるよという話 ○ プロセス数の調整もできる ● 実行方法 ○ python manage.py test --pararell=5 ■ DJANGO_TEST_PROCESSESでプロセス数を設定可能 ● 注意点。やっぱあるよね ○ pdb仕込むときは並列化を無効にしないと pdb落ちる ○ テスト失敗時は例外のトレースバックが表示されないこともある(デバッグするの大変になるかも) ○ 各プロセスのテストで独自 DBを使用するので、同じリソースにアクセスしないように気をつけろよ
  29. 29. Running tests in parallel ● サポート対象外 あっ...。 ○ OSがWindows ○ データベースがOracle
  30. 30. まとめ
  31. 31. まとめ ● トランザクションが正常にコミットされた後に実行するアクションのフックが一機能と して追加された ● パスワードのメジャーなバリデーションをSettingsに設定しておけるようになった ● Django-bracesにあるビューのアクセス制御関連機能がDjangoの機能として使え るようになった ● パラレルテストを実行できるようになった ● Djangoで正式にPython3.5が使えるようになった
  32. 32. Have a nice Django life! OMEGA(@equal_001)

×