後方互換性のない変更Django3.0

3.0後方互換性のない変更

データベースバックエンドAPI

このセクションでは、必要とされ得るサードパーティのデータベース・バックエンドへの変更を記載しています。

  • 今、2番目のパラメータは、DatabaseIntrospection.get_geometry_type()行の説明ではなく、列名があります。
  • DatabaseIntrospection.get_field_type() あなたは、もはやタプルを返さないことがあります。
  • データベースが同じSQL文で外部キーフィールドを作成するために添加することができる場合は、追加SchemaEditor.sql_create_column_inline_fk適切なSQLを、そうでない場合は、追加適切なSQLを。それ以外の場合は、設定されていますDatabaseFeatures.can_create_inline_fk False
  • DatabaseFeatures.can_return_id_from_insertそして、  can_return_ids_from_bulk_insertそれが改名された  can_return_columns_from_insertcan_return_rows_from_bulk_insert
  • 今、データベース機能を処理することができる使用して例示的フォーマットが作成される(例えば、 出力)。実施、などの準備時間、  サードパーティのバックエンドは、このフォーマットを処理する必要があります datetime.timezonedatetime.timedeltatimezone(timedelta(hours=5))'UTC+05:00'DateTimeFielddatetime_cast_date_sql()datetime_extract_sql()
  • エントリはAutoFieldBigAutoFieldおよびSmallAutoFieldに追加され  DatabaseOperations.integer_field_rangesたフィールドのこれらの種類についての範囲のサポートされている認証整数。サードパーティのバックエンドは、デフォルトエントリをカスタマイズする必要があるかもしれません。
  • DatabaseOperations.fetch_returned_insert_id()交換し、  fetch_returned_insert_columns()それが返すステートメント返された値のリストではなく単一の値以上で、。INSERT … RETURNING
  • DatabaseOperations.return_insert_id()置き換え  return_insert_columns()受け入れfields パラメータエントリ内のパラメータのは、反復フィールドを返すように挿入されています。一般的に、これは自動的に主キーが生成されます。

django.contrib.admin

  • モデルの履歴管理者はメッセージを変更するより読みフィールドラベルの代わりに、フィールド名を使用する傾向があります。

django.contrib.gis

  • 長いサポートするのPostGIS 2.1はありません。
  • SpatiaLite 4.1および4.2のためのサポートが削除されました。
  • GDAL 1.11とGEOS 3.4のためのサポートが削除されました。

もはやPostgreSQLのサポートされていません  9.4

PostgreSQLの9.4のための上流のサポートは2019年12月に終了します。Django3.0のサポートはPostgreSQL 9.5以降。

サポートされなくなりましオラクル  12.1

オラクル12.1の上流には、2021年7月に終了します。Django2.2は常に2022年4月にサポートします。Django3.0は公式のOracle 12.2および18cをサポートしています。

専用のPython 2互換削除するAPIを

ジャンゴ2.0でPythonの2のためのサポートが削除さにもかかわらず、しかし、Djangoの特定の独自のAPIからは削除されませんでしたので、サードパーティ製のアプリケーションは、これまでのPython 2の使用が終了するまで、それらを使用し続けることができます。

我々は今、これらのAPIを削除しているので、Pythonの2との互換性を削減しますDjangoの3.0のサポートを追加するときに使用したいので。

  • django.test.utils.str_prefix() 文字列は-Python 3「U」プレフィックスではありません。
  • django.test.utils.patch_logger()使用。unittest.TestCase.assertLogs()
  • django.utils.lru_cache.lru_cache()-別名  functools.lru_cache()
  • django.utils.decorators.available_attrs()-この関数が返します  functools.WRAPPER_ASSIGNMENTS
  • django.utils.decorators.ContextDecorator-別名  contextlib.ContextDecorator
  • django.utils._os.abspathu()-別名os.path.abspath()
  • django.utils._os.upath()そしてnpath()-これらの関数は、Python 3上では動作しません。
  • django.utils.six-へのDELETEを使用し、このベンダー・ライブラリーまたはスイッチ  6
  • django.utils.encoding.python_2_unicode_compatible()-別名  six.python_2_unicode_compatible()
  • django.utils.functional.curry()-使用か  参照してください5b1c389603a353625ae1603をfunctools.partial()functools.partialmethod
  • django.utils.safestring.SafeBytes - ジャンゴ2.0から出発して使用されていません。

新しいデフォルトのためのFILE_UPLOAD_PERMISSIONS設定

古いバージョンでは、デフォルトで設定されています  デフォルト値使用アップロードされたファイルは、そのサイズとアップロード・ハンドラ用途に応じて、異なる権利を持っている原因となります、。FILE_UPLOAD_PERMISSIONSNoneFILE_UPLOAD_HANDLERS

FILE_UPLOAD_PERMISSION今、デフォルトに0o644、この矛盾を避けます。

新しいデフォルトのセキュリティ設定

より安全なデフォルトのDjangoプロジェクトにするために、いくつかのセキュリティ設定は今より安全なデフォルトを持っています。

これらの変更の詳細については、を参照してください上記の「新しい セキュリティ」セクション

雑多

  • ContentType.__str__()今のモデルが含まれapp_label、異なるアプリケーションの中に同じ名前で取り除くことができるのモデル曖昧。
  • クッキー内のセッションで不承認の代わりの言語にアクセスするので、その償却は、セッション中に、もはや後にLocaleMiddleware、ユーザーの言語を見つけるために、言語はもはや予約されたセッションではありません。django.contrib.auth.logout()
  • django.utils.html.escape()今のためのHTMLをエスケープ。この変換代わりに、以前の10進コードhtml.escape()'''
  • このオプションは、今のように働くのではなくショートカットとして、オプションdjango-admin test -kunittest -k--keepdb
  • pywatchman<1.2.0 サポートが削除されました。
  • urlencode()それは、今whenerのためにエンコードすることができdoseq=False、それ標準ライブラリなって、むしろその反復よりも、一貫性のある機能。urllib.parse.urlencode()
  • intwordテンプレートフィルタは現在、変換され1.0、他のすべての値が複数形に、単数形のフレーズに。いくつかの言語では、これは正しくない可能性があります。
  • さて、値がモデルに割り当てられているか、  未設定のフィールドを対応する属性。このフィールドにアクセスした後、クエリにつながります。ForeignKeyOneToOneField '_id'
  • patch_vary_headers()今  '*'によるRFC 7231-#セクション7.1.4ヘッダーフィールド名のリストにアスタリスクが含まれている場合で、、、Varyヘッダは、単一のアスタリスクで構成されます'*'
  • MySQLの8.0.16+では、PositiveIntegerFieldPositiveSmallIntegerField 今でデータベースに負の値を防ぐために、チェック制約が含まれています。
  • alias=Noneこれは、署名に追加されました  Expression.get_group_by_cols()
  • sqlparse<の0.2.2 サポートが削除されました。

おすすめ

転載: www.cnblogs.com/worldinmyeyes/p/12018215.html