Django1.0リリースノート
Django 1.0へようこそ!
私たちはこの瞬間を3年以上楽しみにしていて、ついにここに来ました。 Django 1.0は、これまでのDjangoの開発における最大のマイルストーンを表しています。完璧主義者のグループが本当に誇りに思うことができるWebフレームワークです。
Django 1.0は、オープンソースプロジェクトとしての3年以上にわたるコミュニティ開発を表しています。 Djangoは何百人もの開発者から寄稿を受け、50の言語に翻訳され、今日ではあらゆる大陸のあらゆる種類の仕事で開発者によって使用されています。
興味深い歴史的メモ:Djangoが2005年7月に最初にリリースされたとき、Djangoの最初にリリースされたバージョンは、リビジョン番号8825の内部リポジトリからのものでした。 Django 1.0は、パブリックリポジトリのリビジョン8961を表しています。 私たちの1.0リリースは、コミュニティの貢献が私的になされたものを追い抜く瞬間に来るのはふさわしいようです。
安定性と上位互換性
Django 1.0のリリースには、APIの安定性と上位互換性が約束されています。 一言で言えば、これは、Django 1.0に対して開発したコードが1.1に対して変更なしで引き続き機能することを意味し、1.Xリリースに対してわずかな変更を加えるだけで済みます。
詳細については、 API安定性ガイドを参照してください。
後方互換性のない変更
Django 1.0には、Django0.96からの下位互換性のない変更がいくつかあります。 移植する必要があるDjango0.96に対して作成されたアプリがある場合は、詳細な移植ガイドを参照してください。
後方互換性のない変更の完全なリストは、 https://code.djangoproject.com/wiki/BackwardsIncompatibleChangesにあります。
Django1.0の新機能
ロット!
Django 0.96以降、4,000を超えるコードのコミットを行い、2,000を超えるバグを修正し、約350,000行のコードを編集、追加、または削除しました。 また、40,000行の新しいドキュメントを追加し、既存のドキュメントを大幅に改善しました。
実際、新しいドキュメントはDjango 1.0のお気に入りの機能の1つなので、そこから始めたほうがよいでしょう。 まず、新しいドキュメントサイトがあります。
ドキュメントは大幅に改善され、クリーンアップされ、全体的に素晴らしいものになりました。 現在、専用の検索、インデックスなどがあります。
1.0の新機能をすべて文書化することはできないかもしれませんが、文書化が最も信頼のおけるガイドになります。 次のようなものが表示される場所はどこでも:
バージョン1.0の新機能:この機能はDjango1.0の新機能です
新しいものや変更されたものを見ていることがわかります。
Django1.0の他の主なハイライトは次のとおりです。
リファクタリングされた管理アプリケーション
Django管理インターフェース(django.contrib.admin
)は完全にリファクタリングされました。 管理者定義はモデル定義から完全に分離され(モデルでのclass Admin
宣言はなくなりました!)、Djangoの新しいフォーム処理ライブラリ(0.96リリースでdjango.newforms
として導入され、利用可能になりました)を使用するように書き直されました。単にdjango.forms
)として、拡張性とカスタマイズを念頭に置いて再設計されました。 管理アプリケーションの完全なドキュメントは、公式のDjangoドキュメントでオンラインで入手できます。
詳細については、管理者リファレンスを参照してください。
Unicode処理の改善
Djangoの内部は、全体でUnicodeを使用するようにリファクタリングされています。 これにより、Djangoで西ヨーロッパ以外のコンテンツとデータを処理するタスクが大幅に簡素化されます。 さらに、Unicodeを適切に処理する場合と処理しない場合があるサードパーティのライブラリやシステムとの相互運用性を容易にするユーティリティ関数が提供されています。 詳細は、DjangoのUnicode処理ドキュメントに記載されています。
Unicodeデータを参照してください。
改善されたORM
Djangoのオブジェクトリレーショナルマッパー(Djangoモデルクラスとデータベース間のマッピングを提供し、データベースクエリを仲介するコンポーネント)は、大規模なリファクタリングによって劇的に改善されました。 Djangoのほとんどのユーザーにとって、これは下位互換性があります。 データベースクエリ用の公開APIにはいくつかの小さな変更が加えられましたが、ほとんどの更新はORMの内部で行われました。 後方互換性のない変更や、このリファクタリングによって開かれた新機能の説明など、変更のガイドは、 Django wiki で入手できます。
テンプレート変数の自動エスケープ
クロスサイトスクリプティング(XSS)の脆弱性に対するセキュリティを向上させるために、Djangoのテンプレートシステムは変数の出力を自動的にエスケープするようになりました。 この動作は構成可能であり、変数とより大きなテンプレート構造の両方を安全(エスケープが不要)または安全でない(エスケープが必要)としてマークできます。 この機能の完全なガイドは、:ttag: `autoescape` タグのドキュメントにあります。
django.contrib.gis(GeoDjango)
作成中の1年以上のプロジェクトで、これにより、contrib
アプリケーションの形式で、世界クラスのGIS(地理情報システム)サポートがDjangoに追加されます。 そのドキュメントは現在外部で管理されており、まもなくメインのDjangoドキュメントにマージされます。 この機能の作成と完成に尽力してくれたJustinBronn、Jeremy Dunck、Brett Hoerner、TravisPinneyに心から感謝します。
詳細については、 http://geodjango.org/を参照してください。
プラグ可能なファイルストレージ
Djangoの組み込みFileField
およびImageField
は、プラグ可能なファイルストレージバックエンドを利用できるようになり、アップロードされたファイルをDjangoが保存する場所と方法を大幅にカスタマイズできるようになりました。 詳細については、ファイルのドキュメントを参照してください。 これを完了するために大変な努力をしてくれたMartyAlchinに大いに感謝します。
Jythonの互換性
Google Summer ofCodeプロジェクト中のLeoSotoの多くの作業のおかげで、Djangoのコードベースがリファクタリングされ、Java仮想でPythonコードを実行するJavaで記述されたPythonの実装である Jython との非互換性が削除されました。マシーン。 Djangoは、次のJython2.5リリースと互換性があります。
フォームと管理者の一般的な関係
クラスがdjango.contrib.contenttypes
に含まれるようになりました。これを使用して、管理インターフェイスとエンドユーザーフォームの両方で一般的な関係をサポートできます。 詳細については、一般的な関係のドキュメントを参照してください。
INSERT / UPDATEの区別
モデルのsave()
メソッドを持つDjangoのデフォルトの動作では、SQLレベルでINSERT
とUPDATE
のどちらを実行するかが自動的に決定されますが、ほとんどの場合に適しています。どちらか一方を強制することが役立つ状況。 その結果、モデルはsave()
に追加のパラメーターをサポートできるようになり、特定の操作を強制できるようになりました。
詳細については、 INSERTまたはUPDATEの強制を参照してください。
分割CacheMiddleware
DjangoのCacheMiddleware
は3つのクラスに分割されました。CacheMiddleware
自体はまだ存在し、以前の機能をすべて保持していますが、キャッシュの2つの部分を処理する2つの別個のミドルウェアクラスから構築されています(挿入これらの機能を単一のミドルウェアに組み合わせると問題が発生する状況に対して、追加の柔軟性を提供します。
適切な使用に関する更新されたメモを含む完全な詳細は、キャッシングドキュメントにあります。
リファクタリングdjango.contrib.comments
Google Summer of Codeプロジェクトの一環として、Thejaswi Puthrayaは、Djangoのバンドルされたコメントシステムの大幅な書き直しとリファクタリングを実行し、柔軟性とカスタマイズ性を大幅に向上させました。
非推奨の機能の削除
以前に非推奨としてマークされ、1.0リリースより前に削除が予定されていた多くの機能とメソッドは、Djangoには存在しなくなりました。 これには、django.newforms
(現在は単にdjango.forms
にあります)、form_for_model
およびform_for_instance
ヘルパー関数([に置き換えられました)からのフォームライブラリのインポートが含まれます。 X166X] )と、Django 1.0アルファリリースで導入されたディスパッチャー、ファイルアップロード、ファイルストレージリファクタリングに置き換えられた多くの非推奨機能。
既知の問題点
Django 1.0を可能な限り堅牢にするために最善を尽くしましたが、残念ながら、リリースでわかっている問題がいくつかあります。
to_fieldによるマルチテーブルモデルの継承
複数テーブルモデルの継承を使用している場合は、この警告に注意してください。カスタムparent_link
およびto_field
を使用する子モデルはデータベース整合性エラーを引き起こします。 次のようなモデルのセットは無効です。
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の次のリリースで修正される予定です。