Django 1.9

Preview:

Citation preview

Django 1.9

OMEGA(@equal_001)

お前誰よ

・OMEGA (@equal_001)

・株式会社ビープラウド

・Python, Djangoの開発メイン

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

・バイクはいいぞ〜!

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

今日はDjangoの話をします

その前に

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

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

ところで

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

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

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

まぁ、気をとりなおして

今日はDjango 1.9で

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

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

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

死んでしまいます

主な追加機能(目次)

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

・Python 3.5 が使える

Performing actions

after a transaction commit

Performing actions after a transaction commit

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

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

Password validation

Password validation

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

Password validation:UserAttributeSimilarityValidator

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

しているかどうかを検証

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

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

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

Password validation:CommonPasswordValidator

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

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

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

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

Password validation:MinimumLengthValidator、NumericPasswordValidator

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

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

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

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

Permission mixins for class-based views

Permission mixins for class-based views

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

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

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

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

Permission mixins for class-based views:LoginRequiredMixin

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

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

Permission mixins for class-based views:PermissionRequiredMixin

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

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

Running tests in parallel

Running tests in parallel

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

● 実行方法

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

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

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

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

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

Running tests in parallel

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

○ OSがWindows

○ データベースがOracle

まとめ

まとめ

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

して追加された

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

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

るようになった

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

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

Have a nice Django life!

OMEGA(@equal_001)