Django 棄用時間表

此文件概述 Django 的各個部分在被棄用後,將會根據棄用政策,在何時被移除或以不向下相容的方式修改。關於每個項目的更多詳細資訊通常可以在前兩個版本的發行說明中找到。

6.0

請參閱Django 5.0 發行說明以瞭解有關這些變更的更多詳細資訊。

  • DjangoDivFormRendererJinja2DivFormRenderer 過渡性的表單渲染器將被移除。

  • 將位置引數傳遞給 BaseConstraint 的支援將被移除。

  • request 將在 ModelAdmin.lookup_allowed() 子類別的簽名中是必要的。

  • django.db.models.sql.datastructures.Join 將不再回退到 get_joining_columns()

  • ForeignObjectForeignObjectRelget_joining_columns() 方法將被移除。

  • ForeignObject.get_reverse_joining_columns() 方法將被移除。

  • forms.URLField 的預設方案將從 "http" 變更為 "https"

  • 不傳遞 args 或 kwargs 就呼叫 format_html() 的支援將被移除。

  • cx_Oracle 的支援將被移除。

  • BaseDatabaseOperations.field_cast_sql() 將被移除。

  • ChoicesMetadjango.db.models.enums.ChoicesType 的別名將被移除。

  • Prefetch.get_current_queryset() 方法將被移除。

  • 相關管理員和描述符的 get_prefetch_queryset() 方法將被移除。

  • get_prefetcher()prefetch_related_objects() 將不再回退到 get_prefetch_queryset()

  • FORMS_URLFIELD_ASSUME_HTTPS 過渡性設定將被移除。

請參閱Django 5.1 發行說明以瞭解有關這些變更的更多詳細資訊。

  • ModelAdmin.log_deletion()LogEntryManager.log_action() 方法將被移除。

  • 未記載的 django.utils.itercompat.is_iterable() 函式和 django.utils.itercompat 模組將被移除。

  • django.contrib.gis.geoip2.GeoIP2.coords() 方法將被移除。

  • django.contrib.gis.geoip2.GeoIP2.open() 方法將被移除。

  • 將位置引數傳遞給 Model.save()Model.asave() 的支援將被移除。

  • django.contrib.gis.gdal.OGRGeometry.coord_dim 的設定器將被移除。

  • django.urls.register_converter() 將不再允許覆寫現有的轉換器。

  • CheckConstraintcheck 關鍵字引數將被移除。

  • FileSystemStorageOS_OPEN_FLAGS 屬性將被移除。

  • FieldCacheMixinget_cache_name() 方法將被移除。

5.1

請參閱Django 4.2 發行說明以瞭解有關這些變更的更多詳細資訊。

  • BaseUserManager.make_random_password() 方法將被移除。

  • 模型的 Meta.index_together 選項將被移除。

  • length_is 模板篩選器將被移除。

  • django.contrib.auth.hashers.SHA1PasswordHasherdjango.contrib.auth.hashers.UnsaltedSHA1PasswordHasherdjango.contrib.auth.hashers.UnsaltedMD5PasswordHasher 將被移除。

  • 模型 django.contrib.postgres.fields.CICharFielddjango.contrib.postgres.fields.CIEmailFielddjango.contrib.postgres.fields.CITextField 將被移除。存根欄位將保留,以與歷史遷移相容。

  • django.contrib.postgres.fields.CIText 混合將被移除。

  • BaseGeometryWidgetmap_widthmap_height 屬性將被移除。

  • SimpleTestCase.assertFormsetError() 方法將被移除。

  • TransactionTestCase.assertQuerysetEqual() 方法將被移除。

  • 將編碼的 JSON 字串字面值傳遞給 JSONField 和相關的查詢和表示式的支援將被移除。

  • 將位置引數傳遞給 SignerTimestampSigner 的支援將被移除。

  • DEFAULT_FILE_STORAGESTATICFILES_STORAGE 設定將被移除。

  • django.core.files.storage.get_storage_class() 函式將被移除。

5.0

請參閱Django 4.0 發行說明以瞭解有關這些變更的更多詳細資訊。

  • SERIALIZE 測試設定將被移除。

  • 未記載的 django.utils.baseconv 模組將被移除。

  • 未記載的 django.utils.datetime_safe 模組將被移除。

  • USE_TZ 設定的預設值將從 False 變更為 True

  • 在請求上下文之外建構的網站地圖的預設網站地圖協定將從 'http' 變更為 'https'

  • DiscoverRunner.build_suite()DiscoverRunner.run_tests()extra_tests 引數將被移除。

  • django.contrib.postgres.aggregates.ArrayAggJSONBAggStringAgg 聚合在沒有資料列時將分別傳回 None,而不是 [][]''

  • USE_L10N 設定將被移除。

  • USE_DEPRECATED_PYTZ 過渡性設定將被移除。

  • pytz 時區的支援將被移除。

  • 將從以下項目中移除 is_dst 引數:

    • QuerySet.datetimes()

    • django.utils.timezone.make_aware()

    • django.db.models.functions.Trunc()

    • django.db.models.functions.TruncSecond()

    • django.db.models.functions.TruncMinute()

    • django.db.models.functions.TruncHour()

    • django.db.models.functions.TruncDay()

    • django.db.models.functions.TruncWeek()

    • django.db.models.functions.TruncMonth()

    • django.db.models.functions.TruncQuarter()

    • django.db.models.functions.TruncYear()

  • django.contrib.gis.admin.GeoModelAdminOSMGeoAdmin 類別將被移除。

  • 未記載的 BaseForm._html_output() 方法將被移除。

  • 當渲染 ErrorDictErrorList 時,回傳 str 而非 SafeString 的能力將被移除。

請參閱Django 4.1 發行說明以取得關於這些變更的更多詳細資訊。

  • SitemapIndexItem.__str__() 方法將被移除。

  • CSRF_COOKIE_MASKED 過渡設定將被移除。

  • django.utils.functional.cached_property()name 參數將被移除。

  • django.contrib.postgres.constraints.ExclusionConstraintopclasses 參數將被移除。

  • errors=None 傳遞給 SimpleTestCase.assertFormError()assertFormsetError() 的未記錄能力將被移除。

  • django.contrib.sessions.serializers.PickleSerializer 將被移除。

  • 在預先獲取相關物件但未提供 chunk_size 參數的查詢集上使用 QuerySet.iterator() 將不再被允許。

  • 將未儲存的模型實例傳遞給相關的篩選器將不再被允許。

  • RemoteUserBackend.configure_user() 子類別的簽名中將需要 created=True

  • 將移除在 django.contrib.auth.views.LogoutViewdjango.contrib.auth.views.logout_then_login() 中透過 GET 請求登出的支援。

  • 將移除 django.utils.timezone.utc 作為 datetime.timezone.utc 的別名。

  • 將回應物件和表單/表單集名稱傳遞給 SimpleTestCase.assertFormError()assertFormsetError() 將不再被允許。

  • django.contrib.gis.admin.OpenLayersWidget 將被移除。

  • django.contrib.auth.hashers.CryptPasswordHasher 將被移除。

  • "django/forms/default.html""django/forms/formsets/default.html" 樣板將被移除。

  • nulls_first=Falsenulls_last=False 傳遞給 Expression.asc()Expression.desc() 方法的能力,以及 OrderBy 表達式將被移除。

4.1

請參閱Django 3.2 發行說明以取得關於這些變更的更多詳細資訊。

  • 將不支援使用 copy.deepcopy() 建立深層複製的物件指派給 TestCase.setUpTestData() 中的類別屬性。

  • BaseCommand.requires_system_checks 將不支援布林值。

  • django.core.validators.EmailValidatorwhitelist 參數和 domain_whitelist 屬性將被移除。

  • default_app_config 模組變數將被移除。

  • 當與字串值比較時,TransactionTestCase.assertQuerysetEqual() 將不再自動在查詢集上呼叫 repr()

  • django.core.cache.backends.memcached.MemcachedCache 將被移除。

  • 將移除 django.contrib.messages.storage.cookie.CookieStorage 所使用的 Django 3.2 之前的訊息格式的支援。

4.0

請參閱Django 3.0 發行說明以取得關於這些變更的更多詳細資訊。

  • django.utils.http.urlquote()urlquote_plus()urlunquote()urlunquote_plus() 將被移除。

  • django.utils.encoding.force_text()smart_text() 將被移除。

  • django.utils.translation.ugettext()ugettext_lazy()ugettext_noop()ungettext()ungettext_lazy() 將被移除。

  • django.views.i18n.set_language() 將不再於 request.session (鍵 django.utils.translation.LANGUAGE_SESSION_KEY) 中設定使用者語言。

  • alias=None 將在 django.db.models.Expression.get_group_by_cols() 子類別的簽名中是必要參數。

  • django.utils.text.unescape_entities() 將被移除。

  • django.utils.http.is_safe_url() 將被移除。

請參閱Django 3.1 發行說明以取得關於這些變更的更多詳細資訊。

  • PASSWORD_RESET_TIMEOUT_DAYS 設定將被移除。

  • 將不再允許使用非布林值作為右側的未記錄的isnull 查詢。

  • django.db.models.query_utils.InvalidQuery 例外類別將被移除。

  • django-admin.py 進入點將被移除。

  • HttpRequest.is_ajax() 方法將被移除。

  • 將移除 django.contrib.messages.storage.cookie.CookieStorage 所使用的 Django 3.1 之前的 Cookie 值編碼格式的支援。

  • 將移除在管理網站中對 Django 3.1 之前的密碼重設令牌(使用 SHA-1 雜湊演算法)的支援。

  • 將移除 Django 3.1 之前的會話編碼格式的支援。

  • 將移除對 Django 3.1 之前的 django.core.signing.Signer 簽章(使用 SHA-1 演算法編碼)的支援。

  • 將移除對 django.core.signing.loads() 中 Django 3.1 之前的 django.core.signing.dumps() 簽章(使用 SHA-1 演算法編碼)的支援。

  • 將移除對 Django 3.1 之前的使用者會話(使用 SHA-1 演算法)的支援。

  • django.utils.deprecation.MiddlewareMixin.__init__()get_response 參數將為必要參數,且不接受 None

  • 將移除 django.dispatch.Signalproviding_args 參數。

  • 將需要 django.utils.crypto.get_random_string()length 參數。

  • 將移除 ModelMultipleChoiceFieldlist 訊息。

  • 將移除將原始欄位別名傳遞給 QuerySet.order_by() 的支援。

  • 模型 NullBooleanField 將被移除。為了與歷史遷移相容,將保留一個存根欄位。

  • django.conf.urls.url() 將被移除。

  • 模型 django.contrib.postgres.fields.JSONField 將被移除。為了與歷史遷移相容,將保留一個存根欄位。

  • django.contrib.postgres.forms.JSONFielddjango.contrib.postgres.fields.jsonb.KeyTransformdjango.contrib.postgres.fields.jsonb.KeyTextTransform 將被移除。

  • {% ifequal %}{% ifnotequal %} 樣板標籤將被移除。

  • DEFAULT_HASHING_ALGORITHM 過渡設定將被移除。

3.1

請參閱Django 2.2 發行說明以取得關於這些變更的更多詳細資訊。

  • django.utils.timezone.FixedOffset 將被移除。

  • django.core.paginator.QuerySetPaginator 將被移除。

  • 模型的 Meta.ordering 將不再影響 GROUP BY 查詢。

  • django.contrib.postgres.fields.FloatRangeFielddjango.contrib.postgres.forms.FloatRangeField 將被移除。

  • FILE_CHARSET 設定將被移除。

  • django.contrib.staticfiles.storage.CachedStaticFilesStorage 將被移除。

  • RemoteUserBackend.configure_user() 將需要將 request 作為第一個位置參數。

  • 將移除對 SimpleTestCase.allow_database_queriesTransactionTestCase.multi_db 的支援。

3.0

請參閱 Django 2.0 版本說明 以取得這些變更的更多詳細資訊。

  • 將移除 django.db.backends.postgresql_psycopg2 模組。

  • 將移除 django.shortcuts.render_to_response()

  • 將移除 DEFAULT_CONTENT_TYPE 設定。

  • 將移除 HttpRequest.xreadlines()

  • 將移除對 Field.from_db_value()Expression.convert_value()context 引數的支援。

  • 將移除 QuerySet.earliest()latest()field_name 關鍵字引數。

請參閱 Django 2.1 版本說明 以取得這些變更的更多詳細資訊。

  • 將移除 django.contrib.gis.db.models.functions.ForceRHR

  • 將移除 django.utils.http.cookie_date()

  • 將移除 staticfilesadmin_static 模板標籤庫。

  • 將移除 django.contrib.staticfiles.templatetags.static()

  • 將移除允許在沒有 obj 引數的情況下定義 InlineModelAdmin.has_add_permission() 的 shim。

2.1

請參閱 Django 1.11 版本說明 以取得這些變更的更多詳細資訊。

  • 將移除 contrib.auth.views.login()logout()password_change()password_change_done()password_reset()password_reset_done()password_reset_confirm()password_reset_complete()

  • 將移除 contrib.auth.views.logout_then_login()extra_context 參數。

  • 將移除 django.test.runner.setup_databases()

  • 將移除 django.utils.translation.string_concat()

  • django.core.cache.backends.memcached.PyLibMCCache 將不再支援將 pylibmc 行為設定作為 OPTIONS 的頂層屬性傳遞。

  • 將移除 django.utils.http.is_safe_url()host 參數。

  • 將移除在呈現 {% include %} 模板標籤時引發的例外狀況靜音處理。

  • 將移除 DatabaseIntrospection.get_indexes()

  • 驗證後端的 authenticate() 方法將需要 request 作為第一個位置引數。

  • 將移除 django.db.models.permalink() 裝飾器。

  • 將移除 USE_ETAGS 設定。CommonMiddlewaredjango.utils.cache.patch_response_headers() 將不再設定 ETag。

  • 將移除 Model._meta.has_auto_field 屬性。

  • 將移除 url() 對正規表示式群組中內嵌旗標 ((?i)(?L)(?m)(?s)(?u)) 的支援。

  • 將移除對沒有 renderer 引數的 Widget.render() 方法的支援。

2.0

請參閱 Django 1.9 版本說明 以取得這些變更的更多詳細資訊。

  • 將移除 django.dispatch.signals.Signal.disconnect()weak 引數。

  • 將移除 django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()

  • 將移除 django.forms.extras 套件。

  • 將移除 assignment_tag 協助程式。

  • 將移除 assertsRedirectshost 引數。當路徑相同時,允許絕對 URL 被視為等於相對 URL 的相容層也將被移除。

  • 將移除 Field.rel

  • 將移除 Field.remote_field.to 屬性。

  • 將需要 ForeignKeyOneToOneFieldon_delete 引數。

  • 將移除 django.db.models.fields.add_lazy_relation()

  • 當啟用時區支援時,如果這些值作為參數傳遞給在 ORM 之外執行的 SQL 查詢,例如使用 cursor.execute() 時,不支援時區的資料庫後端將不再在 UTC 中將感知日期時間轉換為非感知值。

  • 將移除 django.contrib.auth.tests.utils.skipIfCustomUser() 裝飾器。

  • 將移除 GeoManagerGeoQuerySet 類別。

  • 將移除 django.contrib.gis.geoip 模組。

  • 將從下列位置移除範本載入器的 supports_recursion 檢查:

    • django.template.engine.Engine.find_template()

    • django.template.loader_tags.ExtendsNode.find_template()

    • django.template.loaders.base.Loader.supports_recursion()

    • django.template.loaders.cached.Loader.supports_recursion()

  • 將移除 load_template()load_template_sources() 模板載入器方法。

  • 將移除範本載入器的 template_dirs 引數

    • django.template.loaders.base.Loader.get_template()

    • django.template.loaders.cached.Loader.cache_key()

    • django.template.loaders.cached.Loader.get_template()

    • django.template.loaders.cached.Loader.get_template_sources()

    • django.template.loaders.filesystem.Loader.get_template_sources()

  • 將移除 django.template.loaders.base.Loader.__call__() 方法。

  • 將捨棄對具有單一位置參數的自訂錯誤檢視的支援。

  • 將移除 django.utils.feedgenerator.Atom1Feeddjango.utils.feedgenerator.RssFeedmime_type 屬性,而改用 content_type

  • 將移除 django.conf.urls.include()app_name 引數。

  • 將移除對將 3 元組作為 include() 的第一個引數傳遞的支援。

  • 將移除對設定沒有應用程式命名空間的 URL 實例命名空間的支援。

  • 將移除 Field._get_val_from_obj(),而改用 Field.value_from_object()

  • 將移除 django.template.loaders.eggs.Loader

  • 將移除 contrib.auth 檢視的 current_app 參數。

  • 將移除 SimpleTestCase.assertRaisesMessage()callable_obj 關鍵字引數。

  • 將移除對 ModelAdmin 方法的 allow_tags 屬性的支援。

  • 將移除 SyndicationFeed.add_item()enclosure 關鍵字引數。

  • 將移除 django.template.loader.LoaderOrigindjango.template.base.StringOrigin 別名,改用 django.template.base.Origin

請參閱 Django 1.10 版本說明 以取得這些變更的更多詳細資訊。

  • 將移除 makemigrations --exit 選項。

  • 將移除對直接指定到反向外來鍵或多對多關係的支援。

  • 將移除 django.contrib.gis.geos.GEOSGeometryget_srid()set_srid() 方法。

  • 將移除 django.contrib.gis.geos.Pointget_x()set_x()get_y()set_y()get_z()set_z() 方法。

  • 將移除 django.contrib.gis.geos.Pointget_coords()set_coords() 方法。

  • 將移除 django.contrib.gis.geos.MultiPolygoncascaded_union 屬性。

  • 將移除 django.utils.functional.allow_lazy()

  • 將移除 shell --plain 選項。

  • 將移除 django.core.urlresolvers 模組。

  • 將移除 CommaSeparatedIntegerField 模型。為了與歷史遷移相容,將保留一個存根欄位。

  • 將移除對樣板 Context.has_key() 方法的支援。

  • 將移除對 django.core.files.storage.Storage.accessed_time()created_time()modified_time() 方法的支援。

  • 當設定 Meta.default_related_name 時,將移除使用模型名稱進行查詢查找的支援。

  • 將移除 __search 查詢查找和 DatabaseOperations.fulltext_search_sql() 方法。

  • 將移除對於沒有 _apply_rel_filters() 方法的自訂相關管理器類別的支援。

  • 將不再支援將 User.is_authenticated()User.is_anonymous() 作為方法使用。

  • 將移除 Model._meta 的私有屬性 virtual_fields

  • 將移除 Field.contribute_to_class() 中的私有關鍵字引數 virtual_onlyModel._meta.add_field() 中的 virtual

  • 將移除 javascript_catalog()json_catalog() 視圖。

  • 將移除 django.contrib.gis.utils.precision_wkt() 函數。

  • 在多表繼承中,將移除隱式將 OneToOneField 提升為 parent_link 的行為。

  • 將移除對 Widget._format_value() 的支援。

  • 將移除 FileFieldget_directory_name()get_filename() 方法。

  • 將移除 mark_for_escaping() 函數以及它使用的類別:EscapeDataEscapeBytesEscapeTextEscapeStringEscapeUnicode

  • escape 過濾器將更改為使用 django.utils.html.conditional_escape()

  • 將移除 Manager.use_for_related_fields

  • 模型 Manager 繼承將遵循 MRO 繼承規則,並且將移除選擇加入此行為的 Meta.manager_inheritance_from_future

  • 將移除使用 settings.MIDDLEWARE_CLASSES 的舊式中介軟體的支援。

1.10

請參閱 Django 1.8 發行說明 以取得有關這些變更的更多詳細資訊。

  • 將移除直接呼叫 SQLCompiler 作為呼叫其 quote_name_unless_alias 方法別名的支援。

  • 將從 future 樣板標籤庫(在 1.6/1.7 棄用期間使用)中移除 cyclefirstof 樣板標籤。

  • 將移除 django.conf.urls.patterns()

  • 將移除對 django.conf.urls.i18n.i18n_patterns()prefix 引數的支援。

  • 將移除 SimpleTestCase.urls

  • for 樣板標籤中使用不正確的解包值計數將引發例外,而不是靜默失敗。

  • 將移除使用點狀 Python 路徑反轉 URL 的能力。

  • 將移除為 LOGIN_URLLOGIN_REDIRECT_URL 設定使用點狀 Python 路徑的能力。

  • 將為自訂管理命令捨棄對 optparse 的支援(將由 argparse 取代)。

  • 將移除 django.core.management.NoArgsCommand 類別。請改用 BaseCommand,預設情況下它不接收引數。

  • 將移除 django.core.context_processors 模組。

  • 將移除 django.db.models.sql.aggregates 模組。

  • 將移除 django.contrib.gis.db.models.sql.aggregates 模組。

  • 將移除 django.db.sql.query.Query 的以下方法和屬性

    • 屬性:aggregatesaggregate_select

    • 方法:add_aggregateset_aggregate_maskappend_aggregate_mask

  • 將移除 django.template.resolve_variable

  • 將從 django.db.models.options.OptionsModel._meta)中移除以下私有 API

    • get_field_by_name()

    • get_all_field_names()

    • get_fields_with_model()

    • get_concrete_fields_with_model()

    • get_m2m_with_model()

    • get_all_related_objects()

    • get_all_related_objects_with_model()

    • get_all_related_many_to_many_objects()

    • get_all_related_m2m_objects_with_model()

  • 將移除 django.forms.RegexFielderror_message 引數。

  • unordered_list 過濾器將不再支援舊式清單。

  • 將移除對 url() 的字串 view 引數的支援。

  • 將移除將 django.forms.Form._has_changed() 重新命名為 has_changed() 的向後相容的 shim。

  • 將移除 removetags 樣板過濾器。

  • 將移除 django.utils.html 中的 remove_tags()strip_entities() 函數。

  • 將移除 django.contrib.auth.views.password_reset()is_admin_site 引數。

  • 將移除 django.db.models.field.subclassing.SubfieldBase

  • 將移除 django.utils.checksums;其功能已包含在 django-localflavor 1.1+ 中。

  • 將移除 django.contrib.admin.helpers.InlineAdminForm 上的 original_content_type_id 屬性。

  • 將移除允許在沒有 form_class 引數預設值的情況下定義 FormMixin.get_form() 的向後相容 shim。

  • 將移除以下設定

    • ALLOWED_INCLUDE_ROOTS

    • TEMPLATE_CONTEXT_PROCESSORS

    • TEMPLATE_DEBUG

    • TEMPLATE_DIRS

    • TEMPLATE_LOADERS

    • TEMPLATE_STRING_IF_INVALID

  • 將移除向後相容別名 django.template.loader.BaseLoader

  • get_template()select_template() 傳回的 Django 樣板物件將不再在其 render() 方法中接收 Context

  • 樣板回應 API 將強制使用 dict 和與後端相關的樣板物件,而不是 ContextTemplate

  • 將移除下列函數和類別的 current_app 參數

    • django.shortcuts.render()

    • django.template.Context()

    • django.template.RequestContext()

    • django.template.response.TemplateResponse()

  • 下列函數的 dictionarycontext_instance 參數將會移除

    • django.shortcuts.render()

    • django.shortcuts.render_to_response()

    • django.template.loader.render_to_string()

  • 下列函數的 dirs 參數將會移除

    • django.template.loader.get_template()

    • django.template.loader.select_template()

    • django.shortcuts.render()

    • django.shortcuts.render_to_response()

  • 無論 'django.contrib.auth.middleware.SessionAuthenticationMiddleware' 是否在 MIDDLEWARE_CLASSES 中,session 驗證都將會啟用。

  • 私有屬性 django.db.models.Field.related 將會移除。

  • migrate 管理命令的 --list 選項將會移除。

  • ssi 樣板標籤將會移除。

  • if 樣板標籤中對 = 比較運算子的支援將會移除。

  • 為了讓 Storage.get_available_name()Storage.save() 可以不使用 max_length 參數進行定義的向後相容性墊片(shim)將會移除。

  • ModelFormMixin.success_url 中舊有的 %(<foo>)s 語法支援將會移除。

  • GeoQuerySet 的聚合方法 collect()extent()extent3d()make_line()unionagg() 將會移除。

  • 建立內容類型實例時,指定 ContentType.name 的功能將會移除。

  • allow_migrate 舊有簽章的支援將會移除。它從 allow_migrate(self, db, model) 變更為 allow_migrate(self, db, app_label, model_name=None, **hints)

  • 對使用逗號分隔參數的 {% cycle %} 語法支援將會移除。

  • 當給定無效分隔符號時,Signer 發出的警告將會變為例外。

1.9

請參考 Django 1.7 發行說明,以取得這些變更的詳細資訊。

  • django.utils.dictconfig 將會移除。

  • django.utils.importlib 將會移除。

  • django.utils.tzinfo 將會移除。

  • django.utils.unittest 將會移除。

  • syncdb 命令將會移除。

  • django.db.models.signals.pre_syncdbdjango.db.models.signals.post_syncdb 將會移除。

  • 資料庫路由上的 allow_syncdb 將不再自動變成 allow_migrate

  • 將會移除自動同步沒有遷移的應用程式。除非您傳遞 --run-syncdb 選項給 migrate,否則遷移將會成為所有應用程式的強制要求。

  • 沒有遷移的應用程式的 SQL 管理命令 sqlsqlallsqlclearsqldropindexessqlindexes 將會移除。

  • 將會移除自動載入 initial_data fixtures 和初始 SQL 資料的支援。

  • 所有模型都需要定義在已安裝的應用程式內,或宣告明確的 app_label。此外,在載入其應用程式之前,將無法匯入它們。特別是,將無法在它們應用程式的根套件中匯入模型。

  • 模型和表單的 IPAddressField 將會移除。為了與歷史遷移相容,將保留一個存根欄位。

  • AppCommand.handle_app() 將不再支援。

  • 將無法再從 django.contrib.sites.models 匯入 RequestSiteget_current_site()

  • 透過 runfcgi 管理命令的 FastCGI 支援將會移除。請使用 WSGI 部署您的專案。

  • django.utils.datastructures.SortedDict 將會移除。請改用 Python 標準程式庫的 collections.OrderedDict

  • ModelAdmin.declared_fieldsets 將會移除。

  • 為了統一所有 util 和 utils 參考,Django 程式碼庫中的 util.py 實例已重新命名為 utils.py。提供向後相容性的模組將會移除。

    • django.contrib.admin.util

    • django.contrib.gis.db.backends.util

    • django.db.backends.util

    • django.forms.util

  • ModelAdmin.get_formsets 將會移除。

  • 為了將 BaseMemcachedCache._get_memcache_timeout() 方法重新命名為 get_backend_timeout() 而引入的向後相容性墊片將會移除。

  • 針對 dumpdata--natural-n 選項將會移除。

  • 針對 serializers.serialize()use_natural_keys 參數將會移除。

  • 私有 API django.forms.forms.get_declared_fields() 將會移除。

  • 使用 DateTimeField 時,使用 SplitDateTimeWidget 的能力將會移除。

  • WSGIRequest.REQUEST 屬性將會移除。

  • 類別 django.utils.datastructures.MergeDict 將會移除。

  • zh-cnzh-tw 語言代碼將會移除,並已分別替換為 zh-hanszh-hant 語言代碼。

  • 內部 django.utils.functional.memoize 將會移除。

  • django.core.cache.get_cache 將會移除。請將適當的條目加入至 CACHES 並改用 django.core.cache.caches

  • django.db.models.loading 將會移除。

  • 將無法再將可呼叫的參數傳遞給查詢集。

  • BaseCommand.requires_model_validation 將會移除,並改用 requires_system_checks。管理驗證器將會被管理檢查取代。

  • ModelAdmin.validator_classdefault_validator_class 屬性將會移除。

  • ModelAdmin.validate() 將會移除。

  • 為了改用 check_field 方法,django.db.backends.DatabaseValidation.validate_field 將會移除。

  • validate 管理命令將會移除。

  • 為了改用 django.utils.module_loading.import_stringdjango.utils.module_loading.import_by_path 將會移除。

  • 將會從 future 樣板標籤程式庫(在 1.3/1.4 棄用期間使用)中移除 ssiurl 樣板標籤。

  • django.utils.text.javascript_quote 將會移除。

  • 將不再支援以 TEST_ 為前綴的獨立項目,作為資料庫設定中的資料庫測試設定。

  • 將移除 ModelChoiceFieldModelMultipleChoiceFieldcache_choices 選項。

  • RedirectView.permanent 屬性的預設值將從 True 變更為 False

  • 將移除 django.contrib.sitemaps.FlatPageSitemap,改用 django.contrib.flatpages.sitemaps.FlatPageSitemap

  • 將移除私有 API django.test.utils.TestTemplateLoader

  • 將移除 django.contrib.contenttypes.generic 模組。

  • 將移除私有 API django.db.models.sql.where.WhereNode.make_atom()django.db.models.sql.where.Constraint

1.8

請參閱 Django 1.6 發行說明 以取得這些變更的更多詳細資訊。

  • 將移除 django.contrib.comments

  • 將移除下列交易管理 API

    • TransactionMiddleware,

    • django.db.transaction 中定義的裝飾器和上下文管理器 autocommitcommit_on_successcommit_manually

    • 同樣在 django.db.transaction 中定義的函式 commit_unless_managedrollback_unless_managed

    • TRANSACTIONS_MANAGED 設定。

  • cyclefirstof 模板標籤將自動跳脫其引數。在 1.6 和 1.7 中,此行為是由 future 模板標籤程式庫中的這些標籤版本所提供。

  • 將移除 SEND_BROKEN_LINK_EMAILS 設定。請改為將 django.middleware.common.BrokenLinkEmailsMiddleware 中介軟體新增至您的 MIDDLEWARE_CLASSES 設定中。

  • 將移除 django.middleware.doc.XViewMiddleware。請改用 django.contrib.admindocs.middleware.XViewMiddleware

  • Model._meta.module_name 已重新命名為 model_name

  • 移除為重新命名 get_query_set 和類似的查詢集方法而引入的向後相容墊片。這會影響下列類別:BaseModelAdminChangeListBaseCommentNodeGenericForeignKeyManagerSingleRelatedObjectDescriptorReverseSingleRelatedObjectDescriptor

  • 移除為重新命名屬性 ChangeList.root_query_setChangeList.query_set 而引入的向後相容墊片。

  • 將移除 django.views.defaults.shortcut,這是為了將所有 django.contrib 參考從核心 Django 程式碼庫中移除的目標之一。請改用 django.contrib.contenttypes.views.shortcut。也將移除 django.conf.urls.shortcut

  • 將移除對 Python Imaging Library (PIL) 模組的支援,因為它似乎不再積極維護,而且無法在 Python 3 上運作。

  • 將移除下列私有 API

    • django.db.backend

    • django.db.close_connection()

    • django.db.backends.creation.BaseDatabaseCreation.set_autocommit()

    • django.db.transaction.is_managed()

    • django.db.transaction.managed()

  • 將移除 django.forms.widgets.RadioInput,改用 django.forms.widgets.RadioChoiceInput

  • 將移除模組 django.test.simple 和類別 django.test.simple.DjangoTestSuiteRunner。請改用 django.test.runner.DiscoverRunner

  • 將移除模組 django.test._doctest。請改用 Python 標準程式庫中的 doctest 模組。

  • 將移除 CACHE_MIDDLEWARE_ANONYMOUS_ONLY 設定。

  • 將不再由 Django 在模型或表單層執行使用硬式編碼的 *按住「Control」,或在 Mac 上按住「Command」以選取多個。* 字串來覆寫或附加至多對多模型欄位表單中使用者提供的 help_text

  • 將移除 Model._meta.get_(add|change|delete)_permission 方法。

  • 將不再為了向後相容性而讀取工作階段金鑰 django_language

  • 將移除地理網站地圖 (django.contrib.gis.sitemaps.views.indexdjango.contrib.gis.sitemaps.views.sitemap)。

  • 在加速棄用後,將移除 django.utils.html.fix_ampersandsfix_ampersands 範本篩選器和 django.utils.html.clean_html

1.7

請參閱 Django 1.5 發行說明 以取得這些變更的更多詳細資訊。

  • 將移除模組 django.utils.simplejson。標準程式庫提供 json,應改用該模組。

  • 將移除函式 django.utils.itercompat.product。應改用 Python 內建版本。

  • 當 INSTALLED_APPS 和 TEMPLATE_DIRS 設定指定為純字串而非元組時,將移除自動更正,並引發例外狀況。

  • 將移除 HttpResponseSimpleTemplateResponseTemplateResponse__init__ 方法的 mimetype 引數。應改用 content_type。這也適用於 render_to_response() 快捷方式和網站地圖檢視,index()sitemap()

  • HttpResponse 使用迭代器例項化時,或當 content 設定為迭代器時,該迭代器將立即耗用。

  • 將移除 AUTH_PROFILE_MODULE 設定和 User 模型上的 get_profile() 方法。

  • 將移除 cleanup 管理命令。它會由 clearsessions 取代。

  • 將移除 daily_cleanup.py 指令碼。

  • 將從 select_related() 中移除 depth 關鍵字引數。

  • 不支援的 django.test.utils 中的 get_warnings_state()/restore_warnings_state() 函式和 django.test.*TestCase 方法的 save_warnings_state()/restore_warnings_state() 已棄用。請改用 Python 2.6 起提供的 warnings.catch_warnings 上下文管理器。

  • 未記錄的 check_for_test_cookie 方法,位於 AuthenticationForm 中,將在加速棄用後移除。繼承此表單的使用者應移除對此方法的呼叫,並改為確保其與身份驗證相關的檢視受到 CSRF 保護,這可確保啟用 Cookie。

  • 支援 base36 編碼使用者 ID 的 django.contrib.auth.views.password_reset_confirm() 版本(即 django.contrib.auth.views.password_reset_confirm_uidb36)將被移除。如果您的網站運行 Django 1.6 的時間超過 PASSWORD_RESET_TIMEOUT_DAYS,則此變更不會有任何影響。如果沒有,那麼在您升級到 Django 1.7 之前產生的任何密碼重設連結在升級後將無法運作。

  • django.utils.encoding.StrAndUnicode 混入 (mix-in) 將被移除。

1.6

請參閱 Django 1.4 版本說明,以取得這些變更的更多詳細資訊。

  • django.contrib.databrowse 將被移除。

  • django.contrib.localflavor 將在加速棄用後移除。

  • django.contrib.markup 將在加速棄用後移除。

  • 相容性模組 django.utils.copycompatdjango.utils.hashcompat,以及函式 django.utils.itercompat.alldjango.utils.itercompat.any 將被移除。應改為使用 Python 內建版本。

  • csrf_response_exemptcsrf_view_exempt 修飾器將被移除。自 1.4 版以來,csrf_response_exempt 已不再執行任何操作(它會傳回相同的函式),而 csrf_view_exempt 則是 django.views.decorators.csrf.csrf_exempt 的同義詞,應使用它來取代。

  • 為了引入對 PyLibMC 的支援,django.core.cache.backends.memcached.CacheClass 後端在 Django 1.3 中被分割為兩個。歷史的 CacheClass 將被移除,改用 django.core.cache.backends.memcached.MemcachedCache

  • django.contrib.localflavor.uk 的英國前綴物件只能透過其 GB 前綴名稱存取(GB 是英國正確的 ISO 3166 代碼)。

  • IGNORABLE_404_STARTSIGNORABLE_404_ENDS 設定在 1.4 版本中已被 IGNORABLE_404_URLS 取代。它們將被移除。

  • 在 1.4 版本中,表單精靈已重構為使用具有可插拔後端的基於類別的檢視。先前的實作將被移除。

  • 呼叫 cache_page() 的舊方法將被移除。

  • 自動將 debug-false 篩選器加入 'mail_admins' 日誌處理常式的向後相容性 shim 將被移除。如果需要,LOGGING 設定應明確包含此篩選器。

  • 內建截斷函式 django.utils.text.truncate_words()django.utils.text.truncate_html_words() 將被移除,改用 django.utils.text.Truncator 類別。

  • django.contrib.gis.geoip.GeoIP 類別在 1.4 版本中已移至 django.contrib.gis.geoipdjango.contrib.gis.utils 中的快捷方式將被移除。

  • django.conf.urls.defaults 將被移除。函式 include()patterns()url(),以及 handler404handler500 現在可透過 django.conf.urls 取得。

  • 函式 setup_environ()execute_manager() 將從 django.core.management 中移除。這也表示舊的(1.4 版之前)manage.py 檔案樣式將不再運作。

  • is_safeneeds_autoescape 旗標設定為範本篩選函式的屬性將不再受支援。

  • 屬性 HttpRequest.raw_post_data 在 1.4 版本中已重新命名為 HttpRequest.body。向後相容性將被移除 – HttpRequest.raw_post_data 將不再運作。

  • ModelAdmin.response_add() 中的 post_url_continue 參數值必須為 None(重新導向至新建立物件的編輯頁面)或預先格式化的 URL。字串格式(例如先前的預設 '../%s/')將不再被接受。

1.5

請參閱 Django 1.3 版本說明,以取得這些變更的更多詳細資訊。

  • 在沒有 SECRET_KEY 的情況下啟動 Django 將會產生例外,而不是 DeprecationWarning。(這是從通常的棄用路徑加速的;請參閱 Django 1.4 版本說明。)

  • mod_python 請求處理常式將被移除。應改為使用 mod_wsgi 處理常式。

  • 測試用戶端 傳回的 django.test.client.Response 物件上的 template 屬性將被移除。應改為使用 templates 屬性。

  • django.test.simple.DjangoTestRunner 將被移除。應改為使用 unittest 原生類別。django.test.simple.DjangoTestRunner 的功能(包括快速失敗和 Ctrl-C 測試終止)可由 unittest.TextTestRunner 提供。

  • 未記錄的函式 django.contrib.formtools.utils.security_hash 將被移除,改為使用 django.contrib.formtools.utils.form_hmac

  • 基於函式的通用檢視模組將被移除,改用其基於類別的對應項,如此處所述。

  • django.core.servers.basehttp.AdminMediaHandler 將被移除。應改為使用 django.contrib.staticfiles.handlers.StaticFilesHandler

  • 範本標籤庫 adminmedia 和範本標籤 {% admin_media_prefix %} 將被移除,改用通用的靜態檔案處理。(這比通常的棄用路徑更快;請參閱 Django 1.4 版本說明。)

  • urlssi 範本標籤將被修改,因此每個標籤的第一個引數是範本變數,而不是隱含字串。在 1.4 版本中,此行為由 future 範本標籤庫中的標籤版本提供。

  • resetsqlreset 管理命令將被移除。

  • 身份驗證後端將需要支援將非活動使用者傳遞給處理權限的所有方法。supports_inactive_user 屬性將不再檢查,並且可以從自訂後端中移除。

  • 在沒有 SRID 值的幾何圖形上呼叫 transform() 時,將會引發 GEOSException

  • django.http.CompatCookie 將被移除,改用 django.http.SimpleCookie

  • django.core.context_processors.PermWrapperdjango.core.context_processors.PermLookupDict 將被移除,改用對應的 django.contrib.auth.context_processors.PermWrapperdjango.contrib.auth.context_processors.PermLookupDict

  • MEDIA_URLSTATIC_URL 設定將需要以尾隨斜線結尾,以確保範本中有一致的方式可以組合路徑。

  • django.db.models.fields.URLField.verify_exists 將被移除。此功能由於難以解決的安全性和效能問題,已在 1.3.1 版本中被棄用,並將遵循略為加速的棄用時間表。

  • 位於所謂專案路徑下的翻譯,在執行階段進行翻譯建置時將會被忽略。 LOCALE_PATHS 設定可用於相同的任務,方法是在其值中包含指向包含非應用程式特定翻譯的 locale 目錄的檔案系統路徑。

  • Markup contrib 應用程式將不再支援早於 2.1 版本的 Python-Markdown 函式庫。由於這是一個與安全性相關的棄用,因此使用了加速時間表。

  • CACHE_BACKEND 設定將被移除。快取後端應在 CACHES 設定中指定。

1.4

請參閱 Django 1.2 發行說明 以取得有關這些變更的更多詳細資訊。

  • CsrfResponseMiddlewareCsrfMiddleware 將被移除。請在表單內使用 {% csrf_token %} 樣板標籤來啟用 CSRF 保護。CsrfViewMiddleware 將保留並預設啟用。

  • CSRF 功能的舊匯入 (django.contrib.csrf.*),已在 1.2 版本移至核心,將會被移除。

  • django.contrib.gis.db.backend 模組將被移除,並改用特定的後端。

  • SMTPConnection 將被移除,並改用通用的電子郵件後端 API。

  • 資料庫後端的多對多 SQL 產生函式將被移除。

  • 使用頂層設定的 DATABASE_* 系列來定義資料庫連線的功能將被移除。

  • 使用簡寫表示法來指定資料庫後端 (即使用 sqlite3 而不是 django.db.backends.sqlite3) 的功能將被移除。

  • get_db_prep_saveget_db_prep_valueget_db_prep_lookup 方法將必須支援多個資料庫。

  • Message 模型 (位於 django.contrib.auth 中)、其在 User 模型中的相關管理員 (user.message_set) 和相關方法 (user.message_set.create()user.get_and_delete_messages()) 將會被移除。應改用 訊息框架。身份驗證上下文處理器傳回的相關 messages 變數也將被移除。請注意,這表示管理應用程式將取決於訊息上下文處理器。

  • 身份驗證後端將需要支援用於權限檢查的 obj 參數。supports_object_permissions 屬性將不再被檢查,並且可以從自訂後端中移除。

  • 身份驗證後端將需要支援將 AnonymousUser 類別傳遞給所有處理權限的方法。supports_anonymous_user 變數將不再被檢查,並且可以從自訂後端中移除。

  • 指定可呼叫的樣板載入器而不是 Loader 類別的功能將被移除,與內建樣板載入器為了向後相容性而包含的 load_template_source 函式一樣。

  • django.utils.translation.get_date_formats()django.utils.translation.get_partial_date_formats()。這些函式將被移除;請使用具有地區感知的 django.utils.formats.get_format() 來取得適當的格式。

  • django.forms.fields 中,常數:DEFAULT_DATE_INPUT_FORMATSDEFAULT_TIME_INPUT_FORMATSDEFAULT_DATETIME_INPUT_FORMATS 將被移除。請使用 django.utils.formats.get_format() 來取得適當的格式。

  • 使用基於函式的測試執行器的功能將被移除,同時移除 django.test.simple.run_tests() 測試執行器。

  • django.contrib.syndication 中的 views.feed() 視圖和 feeds.Feed 類別將被移除。應改用基於類別的視圖 views.Feed

  • django.core.context_processors.auth。此版本將移除舊方法,並改用 django.contrib.auth.context_processors.auth 中的新方法。

  • postgresql 資料庫後端將被移除,請改用 postgresql_psycopg2 後端。

  • no 語言代碼將被移除,並已由 nb 語言代碼取代。

  • 身份驗證後端將需要定義布林屬性 supports_inactive_user,直到 1.5 版本,屆時將假設所有後端都會處理非作用中的使用者。

  • django.db.models.fields.XMLField 將被移除。此已在 1.3 版本中被棄用。由於自從移除 oldforms 以來,該欄位除了簡單的 TextField 之外沒有任何其他作用,因此使用了加速棄用排程。所有使用 XMLField 的地方都可以替換為 TextField

  • django.core.files.storage.Storage (及其子類別) 的 open() 方法中未記載的 mixin 參數將被移除。

1.3

請參閱 Django 1.1 發行說明 以取得有關這些變更的更多詳細資訊。

  • AdminSite.root()。這種連結管理 URL 的方法將被移除,並改為包含 admin.site.urls

  • 身份驗證後端需要定義布林屬性 supports_object_permissionssupports_anonymous_user,直到 1.4 版本,屆時將假設所有後端都支援這些選項。

回到頂端