SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
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)

Mais conteúdo relacionado

Mais procurados

GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うGAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うTakuya Ueda
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方Takesxi Sximada
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptKazufumi Ohkawa
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?Tetsuo Mitsuda
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Tatsuya Shinozuka
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
Stapy#17LT
Stapy#17LTStapy#17LT
Stapy#17LTdrillan
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎真哉 杉野
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションTetsuya Morimoto
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようcch-robo
 
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうTakuya Ueda
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LTdrillan
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Shinya Okano
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTdrillan
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうTakuya Ueda
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 

Mais procurados (20)

GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うGAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?20120915 Pythonは本当にBlenderの役に立っているか?
20120915 Pythonは本当にBlenderの役に立っているか?
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
Stapy#17LT
Stapy#17LTStapy#17LT
Stapy#17LT
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろうGo初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016
 
Go modules
Go modulesGo modules
Go modules
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LT
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
Django pgroonga
Django pgroongaDjango pgroonga
Django pgroonga
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 

Destaque

Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Hironori Sekine
 
ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編OMEGA (@equal_001)
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Ian Lewis
 
でも、機械学習って お難しいんでしょ?
でも、機械学習って お難しいんでしょ?でも、機械学習って お難しいんでしょ?
でも、機械学習って お難しいんでしょ?Shengbo Xu
 
闇の魔術に対する防衛術
闇の魔術に対する防衛術闇の魔術に対する防衛術
闇の魔術に対する防衛術Yuki Ishikawa
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Takahiro Kubo
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Shinya Okano
 
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012makoto tsuyuki
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Satoshi Nagayasu
 
Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Yuki Ishikawa
 
スタートアップのくせになまいきだ
スタートアップのくせになまいきだスタートアップのくせになまいきだ
スタートアップのくせになまいきだYuki Ishikawa
 
軽量のススメ
軽量のススメ軽量のススメ
軽量のススメhirokiky
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジShinya Okano
 
Python勉強会資料(MessageBoard作成)
Python勉強会資料(MessageBoard作成)Python勉強会資料(MessageBoard作成)
Python勉強会資料(MessageBoard作成)Kimihiro N
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 
顧客リーチ手段再考
顧客リーチ手段再考顧客リーチ手段再考
顧客リーチ手段再考Atsushi Iwasa
 

Destaque (20)

Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編ちょっと真面目にPython&Django・基礎編
ちょっと真面目にPython&Django・基礎編
 
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
でも、機械学習って お難しいんでしょ?
でも、機械学習って お難しいんでしょ?でも、機械学習って お難しいんでしょ?
でも、機械学習って お難しいんでしょ?
 
闇の魔術に対する防衛術
闇の魔術に対する防衛術闇の魔術に対する防衛術
闇の魔術に対する防衛術
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
 
Django learning Part2
Django learning Part2Django learning Part2
Django learning Part2
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
 
Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略
 
スタートアップのくせになまいきだ
スタートアップのくせになまいきだスタートアップのくせになまいきだ
スタートアップのくせになまいきだ
 
軽量のススメ
軽量のススメ軽量のススメ
軽量のススメ
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
 
Biblnk
BiblnkBiblnk
Biblnk
 
kay-jpmobile
kay-jpmobilekay-jpmobile
kay-jpmobile
 
Python勉強会資料(MessageBoard作成)
Python勉強会資料(MessageBoard作成)Python勉強会資料(MessageBoard作成)
Python勉強会資料(MessageBoard作成)
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
顧客リーチ手段再考
顧客リーチ手段再考顧客リーチ手段再考
顧客リーチ手段再考
 

Django 1.9