Djangoのバージョン1.0がリリースされた。PostgreSQLのフルテキスト検索,Unicodeユーザ名の公式サポート,新しいタイプのミドルウェアなどが新たに提供されている。
Django Software Foundationによる動的言語の今回のメジャーリリースでは,django.contrib.postgres.search
モジュールのデータベース関数を使って,PostgreSQLのフルテキスト検索エンジンを簡単に利用することができる。
データベースの1つの列に対して単純な検索を使用する,次のようなサンプルが開発チームから提供されている。
>>> Entry.objects.filter(body_text__search='Cheese')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
“データベース内のbody_textフィールド
からto_tsvector
を,検索語’Cheese'からplainto_tsquery
を,いずれもデフォルトのデータベース検索設定を使用して生成します。検索結果はクエリとベクタとのマッチングによって取得されます。この検索ルックアップを使用するには,’django.contrib.postgres’がINSTALLED_APPS内になければなりません。”
こちらのDjango Documentationには,SearchVector, SearchQuery, SearchRankのサンプルも用意されている。
Django 1.10で新たに導入されたものとしては,この他にも,“DEP 0005で定義された古いタイプのミドルウェアにおける,階層化された厳格な要求/応答の欠如”に対するソリューションなどがある。
“Djangoのリクエスト/レスポンス処理へのフックのフレームワーク”,Djangoの新しいミドルウェアでは,MIDDLEWARE
およびMIDDLEWARE_CLASSES
と互換性を持ったミドルウェアクラスを作成する手段として,django.utils.deprecation.MiddlewareMixin
が提供されている。
資料には次のように,“ミックスインの提供する__init__()
メソッドは省略可能な引数としてget_response
を取得し,それをself.get_response
にストア”する,と説明されている。
__init__()
メソッドは,
self.process_request(request)
を(定義されていれば)呼び出す。self.get_response(request)
を呼び出して,その後,ミドルウェアとビューから応答を取得する。self.process_response(request, response)
を(定義されていれば)呼び出す。- 応答を返す。
Djangoの最新リリースに関するニュースは,ネットでは好意を持って受け入れられ,Channelsの対応リクエストが繰り返し寄せられている。
HackerNewsユーザのTom Forbes氏は“Django 1.10 released”ディスカッションで,“Channelsは残念ながら,今回のリリースには組み込まれていないようです”とコメントした。これに対してはubernostrum氏が,“Channelsは間もなく対応するでしょう。1.10には間に合わなかったようですが,1.11ではスケジュールを合わせて,Djangoと同時にリリースしてほしいと思います。”と返答している。
ユーザのpassiveincomelg氏はそこまでの確信がないようで,“Channelsについては迷っています。機能的にはクールですし,Djangoが非同期に対応する必要を巧みに回避する設計がされているのですが,一方では,GoやErlangならば簡単にできることを実現するために,かなり無茶なことをしているからです”,と述べている。
Django 1.10には後方互換性のない変更や,廃止サイクルの終了に伴って削除された機能もいくつか含まれている。
削除された機能の中には,LOGIN_URL
およびLOGIN_REDIRECT_URL
設定でのPythonのドット付きパスのサポート,django.core.context_processors
, django.db.models.sql.aggregates
, django.contrib.gis.db.models.sql.aggregates
などのモジュール,quote_name_unless_alias
メソッド呼び出しの別名としてのSQLコンパイラの直接呼び出しのサポート,多数のプライベートAPIなどがある。
Pythonで記述されたフリーでオープンソースのアプリケーションフレームワークであるDjangoは,3条項BSDライセンスでリリースされており,InfoQコミュニティからのコントリビューションを歓迎している。
Djangoの改良に貢献したいのであれば,まずはdocs.djangoproject.com/en/dev/internals/contributing/を参照することをお勧めする。
この記事を評価
- 編集者評
- 編集長アクション