Django 1.0 が遂にリリースされました。

posted on 2008/09/04 at PM 10:40 by makoto

(この文書は djangoproject.com の文書 を 露木 が翻訳をしたものです)

Welcome to Django 1.0!

3年以上にわたって楽しみにしていたこの瞬間がついにやってきました。 Django 1.0 は今までのDjangoの開発において最重要なマイルストーンです。 パーフェクショニストが本当に誇りをもてるWebフレームワークです。

Django 1.0は3年以上のオープンソースコミュニティの開発の成果です。 Djangoは数百人の開発者のコントリビュートを受け、50の言語に翻訳され、 今日では様々な種類の業務に利用されています。

興味深い小話: 2005年の7月にDjangoが初めてリリースされた時、オープンソースになる前の 内部的なリビジョンは8825でした。Django 1.0は公開リポジトリの8961でリリースされました。 Django 1.0はコミュニティのコントリビュートがプライベートな時代を打ち負かしたタイミングで リリースされたのです。

安定性と上位互換性

The release of Django 1.0 はAPIの安定と上位互換性を約束します。 簡単に言えば、Django 1.0上で開発したコードは、1.1でもコードの変更無く動作します。 1.Xでもほんの少しの変更をすれば良いはずです。

詳細は API stability guide を参照してください。

後方互換性を失う変更

Django 1.0 はDjango 0.96から後方互換性を失う変更が含まれています。 Django 0.96上で開発したアプリケーションがある場合には、ポーティングをしなければなりません。 詳細はポーティングガイドを参照してください。

http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide/

後方互換性を失う変更の完全なリストは、次のページを参照してください。

http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges.

Django 1.0 の新機能

たっくさん!

Django 0.96から4,000のコードをコミットし、2,000以上のバグを修正し、350,000行のコードの変更がありました。ドキュメントも40,000行追加し、すごく良くなりました。

ちなみに、新しいドキュメントはDjango 1.0 の気に入っているものの一つです。 ですので、新しく始めた方がいいとおもい、新しいドキュメントサイトを用意しました。

http://docs.djangoproject.com/

ドキュメントはより洗練され、すばらしいものとなりました。 専用の検索窓もあり、索引もあります。

まだ1.0の全部をドキュメント化できていませんが、あなたの手引きの決定版となることでしょう。 そこかしこに次のようにあるはずです

New in Django 1.0: This feature is new in Django 1.0

新機能や変更された機能に気づくことでしょう。

Django 1.0の目玉は:

管理インターフェースのリファクタリング

Djangoの管理インターフェース (django.contrib.admin) は完全に書き直されました。 adminの定義はmodel定義から完全に切り離され(もう class Admin をmodelsに記述することはありません!)、new formsライブラリを使うようになりました(0.96では django.newforms となっていたものです、今は単に django.forms になりました)。 また、拡張性とカスタマイズ性を念頭に設計されています。 管理インターフェースの完全なドキュメントはDjangoのオンラインドキュメントにあります。

詳細は admin reference を参照してください。

ユニコード文字処理の向上

Django内部ではUnicodeを使うようにリファクタリングされました。 Djangoで西欧以外のコンテンツやデータを扱う仕事が劇的に簡易化されます。 加えて、ユニコードを綺麗に扱わないサードパーティのライブラリやシステムとの互換性を向上させるユーティリティファンクションも付属しています。 詳細はDjangoのオンラインドキュメントにあります。

詳細は ref-unicode を参照してください。

ORMの向上

DjangoのO/Rマッパ -- Djangoのモデルとデータベースのマッピングを提供するコンポーネントで、データベースクエリの仲介をするもの -- は大きなリファクタリングの成果で劇的に向上しました。 多くのDjangoユーザにとっては後方互換性を保っています。データベースクエリの公開APIはいくつかマイナーな変更を受けますが、殆どの変更はO/Rマッパの内部的な変更です。 このリファクタリングによる、後方互換性を失うものを含む変更や、新しい機能に関しての手引きは available on the Django wiki. にあります。

テンプレートのオートエスケープ

Djangoのテンプレートシステムは変数の出力を自動的にエスケープするようになりました。 クロスサイトスクリプティングの脆弱性に対するセキュリティの向上をもたらします。 自動エスケープは、変数またはテンプレートの大きなブロックでエスケープするかしないかを設定できます。 この機能の完全な手引きは autoescape タグのドキュメントにあります。

django.contrib.gis (GeoDjango)

1年以上かかって開発され、ワールドクラスのGIS (Geographic Information Systems) サポートがDjangoの contrib アプリケーションとして加わりました。 ドキュメントは今のところ外部で管理されてますが、近いうちにDjangoのメインドキュメントに統合されることでしょう。 Huge thanks go to Justin Bronn, Jeremy Dunck, Brett Hoerner and Travis Pinney for their efforts in creating and completing this feature.

詳細は http://geodjango.org/ を参照してください

プラガブルなファイルストレージ

Djangoの標準 FileFieldImageField はプラガブルなファイルストレージバックエンドの利点を得ました。 Djangoがどこにどうやってファイルを保存するかをカスタマイズできるようになりました。 詳細は the files documentation を参照してください。 big thanks go to Marty Alchin for putting in the hard work to get this completed.

Jython との互換性

Thanks to a lot of work from Leo Soto during a Google Summer of Code project, Djangoのコードは Java で記述された Python実装の Jython と互換性のない部分が取り除かれました。 Djangoは、これからリリースされる Jython 2.5 に適合します。

詳細は howto-jython を参照してください。

フォームと管理インターフェースでのジェネリックリレーション

管理インターフェースとエンドユーザ向けのフォームの双方でジェネリックリレーションがサポートされるようになり、 クラスは django.contrib.contenttypes に含まれるようになりました。 詳細は the documentation for generic relations を参照してください。

INSERT/UPDATE 区別

Djangoはmodelの save() メソッドがSQLを使って自動的に INSERTUPDATE を判別するのが標準の動作ですが、どちらか一方を強制することが役に立つ時折の状況があります。 そのため、modelの save() メソッドに追加パラメータを渡して強制させられるようになりました。

詳細は ref-models-force-insert を参照してください。

CacheMiddleware の分割

CacheMiddleware が3つのクラスに分割されました。 CacheMiddleware はもとの機能を保ったまま存在しますが、2つのミドルウェアクラスで構築され、各々がキャッシュの追加と、キャッシュの読み込みの二つのパートをハンドルします。 機能が一つに結合されていることで問題を起こすような状況に柔軟性を与えます。

最適な使い方に関するノートを含む詳細は the caching documentation を参照してください。

django.contrib.comments のリファクタリング

As part of a Google Summer of Code project, Thejaswi Puthraya carried out a major rewrite and refactoring of Django's bundled comment system. 柔軟性とカスタマイズ性を向上しました。 完全なドキュメントアップグレードガイド があります。

deprecated とされた機能の削除

deprecated とされてきた機能やメソッドを取り除きました。1.0のリリースまでに取り除くスケジュールが組まれていたものです。 django.newforms モジュールや form_for_modelform_for_instance といったヘルパーファンクション、 dispatcher や file-uploading 、 file-storage 等の Django 1.0 alpha で登場した機能によって置き換えられたもの等です。

既知の問題

Django 1.0 が可能な限りsolidになるようにベストは尽くしましたが、今回のリリースには残念ながらいくつかの既知の問題が存在します。

to_field を含む複数テーブルのモデル継承

複数テーブルモデル継承 をつかっているようであれば、この警告に注意してください。子モデルがカスタム parent_linkto_field を使っていると、データベースの integrity errors を引き起こします。 次のようなモデルは 不正なもの です

class Parent(models.Model):
    name = models.CharField(max_length=10)
    other_value = models.IntegerField(unique=True)

class Child(Parent):
    father = models.OneToOneField(Parent, primary_key=True, to_field="other_value", parent_link=True)
    value = models.IntegerField()

このバグは次のリリースで修正される予定です。

特定のサポートデータベースに関する警告

Djangoはすべてのデータベースバックエンドでできるだけの機能をサポートしようとしています。 しかしながら、すべてのデータベースは同一ではなく、特にバージョンによっても違いが多くあります。 サポートされている データベースに関するノート を見ておいてください。

Tag | news |

permalink