37
Django 1.9 OMEGA(@equal_001)

Django 1.9

Embed Size (px)

Citation preview

Page 1: Django 1.9

Django 1.9

OMEGA(@equal_001)

Page 2: Django 1.9

お前誰よ

・OMEGA (@equal_001)

・株式会社ビープラウド

・Python, Djangoの開発メイン

・バイク乗りプログラマです

・バイクはいいぞ〜!

・東京モータショーで試乗したMT-25が意外とよかった

Page 3: Django 1.9

今日はDjangoの話をします

Page 4: Django 1.9

その前に

Page 5: Django 1.9

いやぁ、PHP7が出ましたね!

Page 6: Django 1.9

Twitterとか記事サイトみてると、結構盛り上がってたみたいじゃないの

Page 7: Django 1.9

ところで

Page 8: Django 1.9

みなさん知ってましたか?

Page 9: Django 1.9

\ Django 1.9 がリリースされました!/

Page 10: Django 1.9
Page 11: Django 1.9
Page 12: Django 1.9

リリース日が2日しか違わないのにフレームワークと言語は違うのはわかるが、僕は悲しい

Page 13: Django 1.9

まぁ、気をとりなおして

Page 14: Django 1.9

今日はDjango 1.9で

どんな機能が追加されたか紹介していくよ!

Page 15: Django 1.9

まずはどんなものが追加されたかチェックチェック!

Page 16: Django 1.9
Page 17: Django 1.9
Page 18: Django 1.9
Page 19: Django 1.9

メジャー機能の説明だけで許してください

死んでしまいます

Page 20: Django 1.9

主な追加機能(目次)

● performing actions after a transaction commit● password validation.● Permission mixins for class-based views. ● running tests in parallel.

・Python 3.5 が使える

Page 21: Django 1.9

Performing actions

after a transaction commit

Page 22: Django 1.9

Performing actions after a transaction commit

● トランザクションが正常にコミットされた後に実行するアクションのフックが追加され

● rollbackされた場合はdo_something()は呼び出されない

Page 23: Django 1.9

Password validation

Page 24: Django 1.9

Password validation

● パスワードのいろんなバリデーション機能がDjango側でできるようになった○ defalutは []、設定しなければ全てのパスワードは受理される

Page 25: Django 1.9

Password validation:UserAttributeSimilarityValidator

● Userの入力したパスワードが、username, first_name, last_name, email と類似

しているかどうかを検証

● 内部実装○ passwordとその他のvalueをlower()で全て小文字へ

○ SequenceMatcherで文字列を比較、quick_ratio()でシーケンスの同一性を測る

○ 類似性が見られた場合、エラーメッセージを返す

Page 26: Django 1.9

Password validation:CommonPasswordValidator

● よくあるパスワードのリスト.txt を作っておいて、それらと一致したらエラー出す

● 内部実装○ common-passwords.txt.gzを解凍・file openして、リストに保持

○ 入力されたパスワード .lower()が「よくあるパスワードリスト」のどれかと一致したらエラー送出

○ "This password is too common."とかでる

Page 27: Django 1.9

Password validation:MinimumLengthValidator、NumericPasswordValidator

● パスワードの最小の長さを設定できる

● 地味に嬉しい○ 今まで、if len(password) < 9: とかやってた

● formsに書くべきなのでは?とか思った○ Validationするformsとの役割分担、切り分けとか

● 数値のみでパスワードが構成されているかどうかをチェック

Page 28: Django 1.9

Permission mixins for class-based views

Page 29: Django 1.9

Permission mixins for class-based views

● Django-bracesにあるアクセス制御関連と似た機能を追加したよという話○ Django-braces・・・DjangoのClassBasedViewで使えるMixin集

● 今まではdecoratorを作ったり、Django-bracesを入れてやっていたことがDjango側でできるようになった

○ requestを受け取ってViewに処理を渡す前に、アクセス権限のチェックとか

● 今回追加されたMixin○ AccessMixin○ LoginRequiredMixin○ PermissionRequiredMixin○ UserPassesTestMixin

Page 30: Django 1.9

Permission mixins for class-based views:LoginRequiredMixin

● LoginRequiredMixin○ 非認証ユーザをログインページ または 403ページ へリダイレクトする

● Userのis_activeはチェックしないんだって。。

Page 31: Django 1.9

Permission mixins for class-based views:PermissionRequiredMixin

● PermissionRequiredMixin○ ビューにアクセスするユーザが指定の権限を持っているかチェックする

○ 権限のないユーザの取り扱いをまとめてカスタマイズできる

Page 32: Django 1.9

Running tests in parallel

Page 33: Django 1.9

Running tests in parallel

● 別のプロセスで平行してテストを実行できるよという話○ プロセス数の調整もできる

● 実行方法

○ python manage.py test --pararell=5■ DJANGO_TEST_PROCESSESでプロセス数を設定可能

● 注意点。やっぱあるよね

○ pdb仕込むときは並列化を無効にしないと pdb落ちる

○ テスト失敗時は例外のトレースバックが表示されないこともある(デバッグするの大変になるかも)

○ 各プロセスのテストで独自 DBを使用するので、同じリソースにアクセスしないように気をつけろよ

Page 34: Django 1.9

Running tests in parallel

● サポート対象外 あっ...。

○ OSがWindows

○ データベースがOracle

Page 35: Django 1.9

まとめ

Page 36: Django 1.9

まとめ

● トランザクションが正常にコミットされた後に実行するアクションのフックが一機能と

して追加された

● パスワードのメジャーなバリデーションをSettingsに設定しておけるようになった

● Django-bracesにあるビューのアクセス制御関連機能がDjangoの機能として使え

るようになった

● パラレルテストを実行できるようになった

● Djangoで正式にPython3.5が使えるようになった

Page 37: Django 1.9

Have a nice Django life!

OMEGA(@equal_001)