Django 棄用時間表¶
此文件概述 Django 的各個部分在被棄用後,將會根據棄用政策,在何時被移除或以不向下相容的方式修改。關於每個項目的更多詳細資訊通常可以在前兩個版本的發行說明中找到。
6.0¶
請參閱Django 5.0 發行說明以瞭解有關這些變更的更多詳細資訊。
DjangoDivFormRenderer
和Jinja2DivFormRenderer
過渡性的表單渲染器將被移除。將位置引數傳遞給
BaseConstraint
的支援將被移除。request
將在ModelAdmin.lookup_allowed()
子類別的簽名中是必要的。django.db.models.sql.datastructures.Join
將不再回退到get_joining_columns()
。ForeignObject
和ForeignObjectRel
的get_joining_columns()
方法將被移除。ForeignObject.get_reverse_joining_columns()
方法將被移除。forms.URLField
的預設方案將從"http"
變更為"https"
。不傳遞 args 或 kwargs 就呼叫
format_html()
的支援將被移除。對
cx_Oracle
的支援將被移除。BaseDatabaseOperations.field_cast_sql()
將被移除。ChoicesMeta
對django.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()
將不再允許覆寫現有的轉換器。CheckConstraint
的check
關鍵字引數將被移除。FileSystemStorage
的OS_OPEN_FLAGS
屬性將被移除。FieldCacheMixin
的get_cache_name()
方法將被移除。
5.1¶
請參閱Django 4.2 發行說明以瞭解有關這些變更的更多詳細資訊。
BaseUserManager.make_random_password()
方法將被移除。模型的
Meta.index_together
選項將被移除。length_is
模板篩選器將被移除。django.contrib.auth.hashers.SHA1PasswordHasher
、django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher
和django.contrib.auth.hashers.UnsaltedMD5PasswordHasher
將被移除。模型
django.contrib.postgres.fields.CICharField
、django.contrib.postgres.fields.CIEmailField
和django.contrib.postgres.fields.CITextField
將被移除。存根欄位將保留,以與歷史遷移相容。django.contrib.postgres.fields.CIText
混合將被移除。BaseGeometryWidget
的map_width
和map_height
屬性將被移除。SimpleTestCase.assertFormsetError()
方法將被移除。TransactionTestCase.assertQuerysetEqual()
方法將被移除。將編碼的 JSON 字串字面值傳遞給
JSONField
和相關的查詢和表示式的支援將被移除。將位置引數傳遞給
Signer
和TimestampSigner
的支援將被移除。DEFAULT_FILE_STORAGE
和STATICFILES_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.ArrayAgg
、JSONBAgg
和StringAgg
聚合在沒有資料列時將分別傳回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.GeoModelAdmin
和OSMGeoAdmin
類別將被移除。未記載的
BaseForm._html_output()
方法將被移除。當渲染
ErrorDict
和ErrorList
時,回傳str
而非SafeString
的能力將被移除。
請參閱Django 4.1 發行說明以取得關於這些變更的更多詳細資訊。
SitemapIndexItem.__str__()
方法將被移除。CSRF_COOKIE_MASKED
過渡設定將被移除。django.utils.functional.cached_property()
的name
參數將被移除。django.contrib.postgres.constraints.ExclusionConstraint
的opclasses
參數將被移除。將
errors=None
傳遞給SimpleTestCase.assertFormError()
和assertFormsetError()
的未記錄能力將被移除。django.contrib.sessions.serializers.PickleSerializer
將被移除。在預先獲取相關物件但未提供
chunk_size
參數的查詢集上使用QuerySet.iterator()
將不再被允許。將未儲存的模型實例傳遞給相關的篩選器將不再被允許。
RemoteUserBackend.configure_user()
子類別的簽名中將需要created=True
。將移除在
django.contrib.auth.views.LogoutView
和django.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=False
或nulls_last=False
傳遞給Expression.asc()
和Expression.desc()
方法的能力,以及OrderBy
表達式將被移除。
4.1¶
請參閱Django 3.2 發行說明以取得關於這些變更的更多詳細資訊。
將不支援使用
copy.deepcopy()
建立深層複製的物件指派給TestCase.setUpTestData()
中的類別屬性。BaseCommand.requires_system_checks
將不支援布林值。django.core.validators.EmailValidator
的whitelist
參數和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.Signal
的providing_args
參數。將需要
django.utils.crypto.get_random_string()
的length
參數。將移除
ModelMultipleChoiceField
的list
訊息。將移除將原始欄位別名傳遞給
QuerySet.order_by()
的支援。模型
NullBooleanField
將被移除。為了與歷史遷移相容,將保留一個存根欄位。django.conf.urls.url()
將被移除。模型
django.contrib.postgres.fields.JSONField
將被移除。為了與歷史遷移相容,將保留一個存根欄位。django.contrib.postgres.forms.JSONField
、django.contrib.postgres.fields.jsonb.KeyTransform
和django.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.FloatRangeField
和django.contrib.postgres.forms.FloatRangeField
將被移除。FILE_CHARSET
設定將被移除。django.contrib.staticfiles.storage.CachedStaticFilesStorage
將被移除。RemoteUserBackend.configure_user()
將需要將request
作為第一個位置參數。將移除對
SimpleTestCase.allow_database_queries
和TransactionTestCase.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()
。將移除
staticfiles
和admin_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
設定。CommonMiddleware
和django.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
協助程式。將移除
assertsRedirects
的host
引數。當路徑相同時,允許絕對 URL 被視為等於相對 URL 的相容層也將被移除。將移除
Field.rel
。將移除
Field.remote_field.to
屬性。將需要
ForeignKey
和OneToOneField
的on_delete
引數。將移除
django.db.models.fields.add_lazy_relation()
。當啟用時區支援時,如果這些值作為參數傳遞給在 ORM 之外執行的 SQL 查詢,例如使用
cursor.execute()
時,不支援時區的資料庫後端將不再在 UTC 中將感知日期時間轉換為非感知值。將移除
django.contrib.auth.tests.utils.skipIfCustomUser()
裝飾器。將移除
GeoManager
和GeoQuerySet
類別。將移除
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.Atom1Feed
和django.utils.feedgenerator.RssFeed
的mime_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.LoaderOrigin
和django.template.base.StringOrigin
別名,改用django.template.base.Origin
。
請參閱 Django 1.10 版本說明 以取得這些變更的更多詳細資訊。
將移除
makemigrations --exit
選項。將移除對直接指定到反向外來鍵或多對多關係的支援。
將移除
django.contrib.gis.geos.GEOSGeometry
的get_srid()
和set_srid()
方法。將移除
django.contrib.gis.geos.Point
的get_x()
、set_x()
、get_y()
、set_y()
、get_z()
和set_z()
方法。將移除
django.contrib.gis.geos.Point
的get_coords()
和set_coords()
方法。將移除
django.contrib.gis.geos.MultiPolygon
的cascaded_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_only
和Model._meta.add_field()
中的virtual
。將移除
javascript_catalog()
和json_catalog()
視圖。將移除
django.contrib.gis.utils.precision_wkt()
函數。在多表繼承中,將移除隱式將
OneToOneField
提升為parent_link
的行為。將移除對
Widget._format_value()
的支援。將移除
FileField
的get_directory_name()
和get_filename()
方法。將移除
mark_for_escaping()
函數以及它使用的類別:EscapeData
、EscapeBytes
、EscapeText
、EscapeString
和EscapeUnicode
。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 棄用期間使用)中移除cycle
和firstof
樣板標籤。將移除
django.conf.urls.patterns()
。將移除對
django.conf.urls.i18n.i18n_patterns()
的prefix
引數的支援。將移除
SimpleTestCase.urls
。在
for
樣板標籤中使用不正確的解包值計數將引發例外,而不是靜默失敗。將移除使用點狀 Python 路徑反轉 URL 的能力。
將移除為
LOGIN_URL
和LOGIN_REDIRECT_URL
設定使用點狀 Python 路徑的能力。將移除
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
的以下方法和屬性屬性:
aggregates
和aggregate_select
方法:
add_aggregate
、set_aggregate_mask
和append_aggregate_mask
。
將移除
django.template.resolve_variable
。將從
django.db.models.options.Options
(Model._meta
)中移除以下私有 APIget_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.RegexField
的error_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
。將移除下列函數和類別的
current_app
參數django.shortcuts.render()
django.template.Context()
django.template.RequestContext()
django.template.response.TemplateResponse()
下列函數的
dictionary
和context_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_syncdb
和django.db.models.signals.post_syncdb
將會移除。資料庫路由上的
allow_syncdb
將不再自動變成allow_migrate
。將會移除自動同步沒有遷移的應用程式。除非您傳遞
--run-syncdb
選項給migrate
,否則遷移將會成為所有應用程式的強制要求。沒有遷移的應用程式的 SQL 管理命令
sql
、sqlall
、sqlclear
、sqldropindexes
和sqlindexes
將會移除。將會移除自動載入
initial_data
fixtures 和初始 SQL 資料的支援。所有模型都需要定義在已安裝的應用程式內,或宣告明確的
app_label
。此外,在載入其應用程式之前,將無法匯入它們。特別是,將無法在它們應用程式的根套件中匯入模型。模型和表單的
IPAddressField
將會移除。為了與歷史遷移相容,將保留一個存根欄位。AppCommand.handle_app()
將不再支援。將無法再從
django.contrib.sites.models
匯入RequestSite
和get_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-cn
和zh-tw
語言代碼將會移除,並已分別替換為zh-hans
和zh-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_class
和default_validator_class
屬性將會移除。ModelAdmin.validate()
將會移除。為了改用
check_field
方法,django.db.backends.DatabaseValidation.validate_field
將會移除。validate
管理命令將會移除。為了改用
django.utils.module_loading.import_string
,django.utils.module_loading.import_by_path
將會移除。將會從
future
樣板標籤程式庫(在 1.3/1.4 棄用期間使用)中移除ssi
和url
樣板標籤。django.utils.text.javascript_quote
將會移除。將不再支援以
TEST_
為前綴的獨立項目,作為資料庫設定中的資料庫測試設定。將移除
ModelChoiceField
和ModelMultipleChoiceField
的cache_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
中定義的裝飾器和上下文管理器autocommit
、commit_on_success
和commit_manually
,同樣在
django.db.transaction
中定義的函式commit_unless_managed
和rollback_unless_managed
,TRANSACTIONS_MANAGED
設定。
cycle
和firstof
模板標籤將自動跳脫其引數。在 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
和類似的查詢集方法而引入的向後相容墊片。這會影響下列類別:BaseModelAdmin
、ChangeList
、BaseCommentNode
、GenericForeignKey
、Manager
、SingleRelatedObjectDescriptor
和ReverseSingleRelatedObjectDescriptor
。移除為重新命名屬性
ChangeList.root_query_set
和ChangeList.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.index
和django.contrib.gis.sitemaps.views.sitemap
)。在加速棄用後,將移除
django.utils.html.fix_ampersands
、fix_ampersands
範本篩選器和django.utils.html.clean_html
。
1.7¶
請參閱 Django 1.5 發行說明 以取得這些變更的更多詳細資訊。
將移除模組
django.utils.simplejson
。標準程式庫提供json
,應改用該模組。將移除函式
django.utils.itercompat.product
。應改用 Python 內建版本。當 INSTALLED_APPS 和 TEMPLATE_DIRS 設定指定為純字串而非元組時,將移除自動更正,並引發例外狀況。
將移除
HttpResponse
、SimpleTemplateResponse
和TemplateResponse
的__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.copycompat
和django.utils.hashcompat
,以及函式django.utils.itercompat.all
和django.utils.itercompat.any
將被移除。應改為使用 Python 內建版本。csrf_response_exempt
和csrf_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_STARTS
和IGNORABLE_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.geoip
–django.contrib.gis.utils
中的快捷方式將被移除。django.conf.urls.defaults
將被移除。函式include()
、patterns()
和url()
,以及handler404
和handler500
現在可透過django.conf.urls
取得。函式
setup_environ()
和execute_manager()
將從django.core.management
中移除。這也表示舊的(1.4 版之前)manage.py
檔案樣式將不再運作。將
is_safe
和needs_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 版本說明。)url
和ssi
範本標籤將被修改,因此每個標籤的第一個引數是範本變數,而不是隱含字串。在 1.4 版本中,此行為由future
範本標籤庫中的標籤版本提供。reset
和sqlreset
管理命令將被移除。身份驗證後端將需要支援將非活動使用者傳遞給處理權限的所有方法。
supports_inactive_user
屬性將不再檢查,並且可以從自訂後端中移除。在沒有 SRID 值的幾何圖形上呼叫
transform()
時,將會引發GEOSException
。django.http.CompatCookie
將被移除,改用django.http.SimpleCookie
。django.core.context_processors.PermWrapper
和django.core.context_processors.PermLookupDict
將被移除,改用對應的django.contrib.auth.context_processors.PermWrapper
和django.contrib.auth.context_processors.PermLookupDict
。MEDIA_URL
或STATIC_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 發行說明 以取得有關這些變更的更多詳細資訊。
CsrfResponseMiddleware
和CsrfMiddleware
將被移除。請在表單內使用{% 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_save
、get_db_prep_value
和get_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_FORMATS
、DEFAULT_TIME_INPUT_FORMATS
和DEFAULT_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_permissions
和supports_anonymous_user
,直到 1.4 版本,屆時將假設所有後端都支援這些選項。