.. _releases-0.96: ===================================== Django バージョン 0.96 リリースノート ===================================== :revision-up-to: 17812 (1.4) Django 0.96 の世界へようこそ! Django 0.96 の主な目標は、 0.95 で採り入れられた機能に対するクリーンアップ と安定化にあります。 0.96 には、 0.95 以前のバージョンと `互換性のない変更 <#backwards-incompatible-changes>`_ がわずかにありますが、 アップグレードは簡単で、既存のアプリケーションもとくに大きな変更なく動作す るはずです。 とはいえ、 0.96 のリリースには、今後取り込まれる予定の一連の互換性のない変 更に備えるという意味もあります。これらの変更を適用した後には、アプリケーショ ン開発者は自分のコードを多少変更せねばならなくなるでしょう。ですから、次の 公式リリースまでは 0.96 を使い続けるよう勧めます。そうすれば、開発バージョ ンの Django に変更が取り込まれる度に少しづつコードをいじるのではなく、一ス テップでアップグレードできるようになるからです。 .. _Backwards-incompatible changes: 互換性のない変更 ================ 以下の変更によって、 0.95 から 0.96 に乗り換える際にコードを更新する必要が あります: .. _`MySQLdb version requirement`: MySQLdb バージョンの制約 ------------------------ ``MySQLdb`` モジュール (Django が MySQL データベースにアクセスするために使っ ているバックエンド) の古いバージョンのバグを回避するため、 Django の MySQL バックエンドはバージョン 1.2.1p2 またはそれ以降の ``MySQLdb`` を要求するよ うになり、それ以前のバージョンを使おうとすると例外を送出するようになりまし た。 現状でこの制約に適合するように ``MySQLdb`` のバージョンを上げられない場合、 以前のバージョンと互換性のあるバックエンド ``mysql_old`` を使ってください。 このバックエンドを使うには、 :setting:`DATABASE_ENGINE` の設定を、これまで の:: DATABASE_ENGINE = "mysql" から:: DATABASE_ENGINE = "mysql_old" に変更してください。 とはいえ、 MySQL ユーザにはできるだけ最新の ``MySQLdb`` にアップグレードす るよう強く勧めます。 ``mysql_old`` バックエンドは移行を簡単にするだけのため に存在しており、撤廃対象とみなされています。必要なセキュリティフィクスを除 き、ほとんどメンテナンスされることはなく、将来のバージョンで削除される予定 です。 また、 :setting:`DATABASE_OPTIONS` のような設定 (詳細は :doc:`データベースのドキュメント ` を参照してください) は、 "mysql" バックエンドでのみ利用でき、 "mysql_old" では使えません。 .. _Database constraint names changed: データベース名の制約に関する変更 -------------------------------- Django が外部キー参照を生成するときに使う制約名が少し変更されました。 通常、制約名はカラムに対する参照を直接行えない場合にのみ使われるので、 ユーザの目に触れることはありません。 この変更の影響として、 ``manage.py reset`` や同様のコマンドを既存のデータベー スに対して実行すると、新たな制約名の形式で SQL を生成する一方、データベース 本体には以前の形式の制約名が存在するという問題が生じ、このためにデータベー スサーバが実在しない制約に対する変更が行われたというエラーメッセージを送出 する場合があります。 この問題を回避するには 2 通りの方法があります: 1. ``manage.py *`` の出力をファイルにリダイレクトし、生成された SQL を編集して正しい制約名に直してから実行します。 2. ``manage.py sqlall`` の出力から新たな制約名がどうなっているかを調べ て、データベース上の既存の制約名を変更する手がかりにします。 .. _Names changes in manage.py: ``manage.py`` のオプション名変更 -------------------------------- フィクスチャのサポートのために、 ``manage.py`` のオプションのうち、いくつか を変更しました: * ``dumpdata`` および ``loaddata`` コマンドが追加されました。これらのコ マンドは、それぞれデータベースに対してデータをダンプしたりロードした りするためのコマンドです。このコマンドは、 Django のサポートする全て のシリアライズ形式を扱えます。 * ``sqlinitialdata`` コマンドは、 ``sqlcustom`` に名称変更しました。こ れは、データ関係の操作は ``loaddata`` を使うべきであることを強調する 意味もあります (``sqlcustom`` はビューやストアドプロシジャなどのカ スタム SQL 定義に使ってください)。 * 以前のバージョンの名残であった ``install`` コマンドを除去しました。 アプリケーションのインストールには ``syncdb`` を使ってください。 .. _Backslash escaping changed: バックスラッシュのエスケープに関する変更 ---------------------------------------- Django のデータベース API はクエリパラメタとして渡されたバックスラッシュを エスケープするようになりました。既存のデータベース API まわりのコードにバッ クスラッシュが入っていて、これまでは (エスケープがなくても) ちゃんと動作し ていたのなら、 1 レベル分「エスケープを外し」ておかねばなりません。 例えば、以前は以下のコードがちゃんと動作していたとします:: # Find text containing a single backslash MyModel.objects.filter(text__contains='\\\\') このコードは、今後は以下のように書かねばなりません:: # Find text containing a single backslash MyModel.objects.filter(text__contains='\\') .. _Removed ENABLE_PSYCO setting: ENABLE_PSYCO 設定の除去 ----------------------- ``ENABLE_PSYCO`` 設定はなくなりました。設定ファイルに ``ENABLE_PSYCO`` を加 えても、何も起きません。 Psyco を有効にしたければ、ミドルウェアクラスを自作 してください。 .. _psyco: http://psyco.sourceforge.net/ .. _What's new in 0.96?: 0.96 の新しい機能 ================= Django 0.96 は 1000 以上の新規コミットと、 400 以上のバグフィクスの結果です。 全ての変更を一覧にするのは不可能なので、主要な変更点だけを説明します。 .. _New forms library: 新しいフォームライブラリ ------------------------ 新たなフォーム処理ライブラリ ``django.newforms`` が導入されました。このライ ブラリは旧来のフォーム/マニピュレータ/バリデーションフレームワークである ``django.forms`` への置き換えにあたります。 0.96 ではどちらの API も使えま すが、今後の 2 バージョンのリリースの中で新たなフォームシステムに完全に移行 し、旧来のシステムは撤廃、除去する予定です。 新たなフォームライブラリへの移行のポイントは 3 つあります: * 現在の ``django.forms`` の実体は ``django.oldforms`` にコピーしました。 これで、互換性のない変更を座して待つことなく、 *今すぐ* コードの修正 に取り掛かれます。修正は、各アプリケーションのコードを以下のように書 き換えるだけです:: from django import forms # 0.95 スタイル from django import oldforms as forms # 0.96 スタイル * 次の Django の公式リリースで、現在の ``django.newforms`` を ``django.forms`` に移動します。これは互換性のない変更なので、以前の ``django.forms`` を使い続けたい人は、上記に従って import 文を変更する 必要があります。 * さらに次のリリースで、 ``django.oldforms`` を完全に除去します。 ``newforms`` ライブラリは現在も改良が続いていますが、すでに一般的な利用に耐 える状態です。Django でのフォーム処理に入門する人は、旧来のフォームを学ぶの はやめて、新たなフォームから学び始めましょう。 ``django.newforms`` の詳細は :doc:`newforms のドキュメント ` を参照してください。 .. _URLconf improvements: URLconf の改良 -------------- URLconf のコールバックに呼出し可能オブジェクトを使えるようになりました (以 前は呼出し可能オブジェクトの Python パス表記名を表す文字列しか指定できませ んでした)。この改良により、URLconf をより直感的に書けるようになりました。 例えば、以下の URLconf:: from django.conf.urls.defaults import * urlpatterns = patterns('', ('^myview/$', 'mysite.myapp.views.myview') ) は、以下のように書けるようになりました:: from django.conf.urls.defaults import * from mysite.myapp.views import myview urlpatterns = patterns('', ('^myview/$', myview) ) 呼出し可能オブジェクトを指定できるようになった利点の一つに、デコレータを使 えるようになったことがあります。 *URLconf の中で* ビューにデコレータを適用 できるのです。これを使えば、ログインの必要な汎用ビューをとても簡単に書けま す:: from django.conf.urls.defaults import * from django.contrib.auth.decorators import login_required from django.views.generic.list_detail import object_list from mysite.myapp.models import MyModel info = { "queryset" : MyModel.objects.all(), } urlpatterns = patterns('', ('^myview/$', login_required(object_list), info) ) どちらの表記方法 (文字列と呼出し可能オブジェクト) も指定方法としては有効で、 当面は混在して利用できます。 .. _The test framework: テストフレームワーク -------------------- ついに Django にテストフレームワークが導入されました。 (テストファーストの 推進者 Kent Beck には悪いですが) これで、「心配を退屈な作業に」変えられます。 テストは :mod:`doctest` か :mod:`unittest` を使って作成でき、簡単なテストクライアントを使った ビューのテストもできます。 また、「フィクスチャ」のサポートも追加されました。フィクスチャは Django の サポートする :doc:`シリアライゼーション形式 ` で保存さ れた初期データで、テストの開始時に自動的にデータベースにロードされます。フィ クスチャによって、実際のデータを使ったテストが一層簡単になります。 詳しくは :doc:`テストのドキュメント` を参照してください。 .. _Improvements to the admin interface: admin インタフェースの改良 -------------------------- ユーザの追加や更新のための専用のビューが admin インタフェースに追加されまし た。これはちょっとした、でもとても素晴らしい変更です。というのも、 admin で ハッシュパスワードを扱わなくてよくなったからです。 .. _Thanks: 謝辞 ====== 0.95 以後、何人もの人達が進み出て、 Django の開発における主要な役割を果たす ようになりました。ここに彼らの尽力に対して謝意を表します: * Russell Keith-Magee と Malcolm Tredinnick は多くのコードに寄与してい ます。 0.96 のリリースは彼らなしでは実現しませんでした。 * 新たなリリースマネジャ、 James Bennett は、 0.95.1 や 0.96, のリリー スを推進してくれました。(そしておそらく将来のリリースでもお世話にな ることでしょう。) * チケットマネジャ Chris Beaven (通称 SmileyChris), Simon Greenhill, Michael Radziej, Gary Wilson に感謝します。彼らは全てのチケットの世話 をして、カタログ化するという偉大な仕事をなしとげました。そのおかげで、 どのチケットに注力すべきかを決める作業が 1000000 倍にも楽になりました。 ほんとうにありがとう。 * バグ報告、パッチ、そしてチケットへのコメントを提出してくださった皆さ んにも感謝します。0.96 に取り込まれたパッチの作者は 200 名以上にもの ぼるので、全ての人の名前を挙げるのは無理ですが、名前を AUTHORS_ に掲 載させていただきました。 .. _AUTHORS: http://code.djangoproject.com/browser/django/trunk/AUTHORS