本文档概述了根据弃用政策 deprecation policy 弃用后,各个Django版本将以向后不兼容的方式删除或更改的情况。 通常,可以在之前的两个版本的发行说明中找到有关每个项目的更多详细信息。
See the Django 5.2 release notes for more details on these changes.
The all
keyword argument of django.contrib.staticfiles.finders.find()
will be removed.
The fallback to request.user
when user
is None
in
django.contrib.auth.login()
and django.contrib.auth.alogin()
will be
removed.
The ordering
keyword argument of the PostgreSQL specific aggregation
functions django.contrib.postgres.aggregates.ArrayAgg
,
django.contrib.postgres.aggregates.JSONBAgg
, and
django.contrib.postgres.aggregates.StringAgg
will be removed.
查看 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()
方法将被移除。
有关这些更改的更多详细信息,请参阅 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
mixin 将被移除。
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()
函数将被移除。
有关这些更改的更多详细信息,请参阅 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
。
将移除通过 GET
请求在 django.contrib.auth.views.LogoutView
和 django.contrib.auth.views.logout_then_login()
中注销的支持。
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"
。
将移除在 Expression.asc()
和 Expression.desc()
方法以及 OrderBy
表达式中传递 nulls_first=False
或 nulls_last=False
的能力。
请查看 Django 3.2 发布说明 以获取有关这些更改的更多详细信息。
将移除在 TestCase.setUpTestData()
中将不支持使用 copy.deepcopy()
创建深拷贝的对象分配给类属性的支持。
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 之前的消息格式的支持。
请查看 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
)。
在 django.db.models.Expression.get_group_by_cols()
子类的签名中将需要 alias=None
。
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 值的编码格式的支持。
将移除在管理员网站中(使用 SHA-1 哈希算法的) Django 3.1 之前的密码重置令牌的支持。
将移除 Django 3.1 之前的会话编码格式的支持。
将移除在 Django 3.1 之前(使用 SHA-1 算法编码的) django.core.signing.Signer
签名的支持。
将移除在 Django 3.1 之前使用 SHA-1 算法编码的 django.core.signing.dumps()
签名在 django.core.signing.loads()
中的支持。
将移除在 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
过渡设置将被移除。
请查看 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
的支持。
请查看 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()
将被移除。
将移除允许定义 InlineModelAdmin.has_add_permission()
时没有 obj
参数的兼容性层。
请查看 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()
将不再设置 ETags。
Model._meta.has_auto_field
属性将被移除。
url()
对正则表达式组中的内联标志((?i)
, (?L)
, (?m)
, (?s)
, 和 (?u)
)的支持将被移除。
将移除没有 renderer
参数的 Widget.render()
方法的支持。
请查看 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()
将被移除。
在启用时区支持时,不再将不支持时区的数据库后端将具有意识到时区的日期时间转换为 UTC 中的不明确值,当这些值作为参数传递给 ORM 之外执行的 SQL 查询,例如,使用 cursor.execute()
时。
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()
方法的 shim。
将不再支持使用 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
的旧式中间件的支持。
请查看 Django 1.8 发布说明 以获取有关这些更改的更多详细信息。
将移除直接调用 SQLCompiler
作为调用其 quote_name_unless_alias
方法的别名的支持。
cycle
和 firstof
模板标签将从 future
模板标签库中移除(在 1.6/1.7 弃用期间使用)。
django.conf.urls.patterns()
将被移除。
django.conf.urls.i18n.i18n_patterns()
中的 prefix
参数支持将被移除。
SimpleTestCase.urls
将被移除。
在模板标签 for
中使用错误的解包值数量将引发异常,而不会默默失败。
将移除使用点分隔的 Python 路径来反向生成 URL 的能力。
将移除对 LOGIN_URL
和 LOGIN_REDIRECT_URL
设置使用点分隔的 Python 路径的能力。
对于自定义管理命令,将停止支持 optparse`(由 :py:mod:`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
的方法和属性:
属性:aggregates
和 aggregate_select
将被移除。
方法:add_aggregate
、set_aggregate_mask
和 append_aggregate_mask
将被移除。
django.template.resolve_variable
将被移除。
以下是将从 django.db.models.options.Options
(Model._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.RegexField
的 error_message
参数将被移除。
unordered_list
过滤器将不再支持旧式列表。
将移除对字符串类型的 view
参数在 url()
中的支持。
将移除将 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
属性将被移除。
将移除向后兼容的 shim,以允许 FormMixin.get_form()
定义时不提供 form_class
参数的默认值。
以下设置将被移除:
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
。
Template response APIs 将强制使用 dict
和依赖于后端的模板对象,而不再使用 Context
和 Template
。
以下函数和类的 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
中。
私有属性 django.db.models.Field.related
将被移除。
migrate
管理命令的 --list
选项将被移除。
ssi
模板标签将被移除。
模板标签中的 if
不再支持 =
比较运算符。
将移除允许在没有 max_length
参数的情况下定义 Storage.get_available_name()
和 Storage.save()
的向后兼容 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
发出的警告将变为异常。
请查看 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
。
将移除对没有迁移的应用程序的自动同步。除非您向 migrate
传递 --run-syncdb
选项,否则所有应用程序将成为必须进行迁移。
将移除没有迁移的应用程序的 SQL 管理命令,包括 sql
、sqlall
、sqlclear
、sqldropindexes
和 sqlindexes
。
将移除对自动加载 initial_data
固定数据和初始 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
将被移除。
在 Django 代码库中,util.py
的实例已被重命名为 utils.py
,以统一所有 util 和 utils 引用。提供向后兼容性的模块将被移除:
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()
而引入的向后兼容 shim。
--natural
和 -n
选项将被移除,用于 dumpdata
。
serializers.serialize()
的 use_natural_keys
参数将被移除。
私有 API django.forms.forms.get_declared_fields()
将被移除。
将移除使用 SplitDateTimeWidget
与 DateTimeField
的能力。
将移除 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()
将被移除。
django.db.backends.DatabaseValidation.validate_field
将被移除,取而代之的是 check_field
方法。
validate
管理命令将被移除。
django.utils.module_loading.import_by_path
将被移除,取而代之的是 django.utils.module_loading.import_string
。
`ssi``和`url``模板标签将从`future``模板标签库中删除(在1.3/1.4弃用期内使用)。
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
将被移除。
请查看 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
和类似 queryset 方法的向后兼容的 shims。这影响到以下类:BaseModelAdmin
、ChangeList
、BaseCommentNode
、GenericForeignKey
、Manager
、SingleRelatedObjectDescriptor
和 ReverseSingleRelatedObjectDescriptor
。
移除了用于重命名属性 ChangeList.root_query_set
和 ChangeList.query_set
的向后兼容的 shims。
django.views.defaults.shortcut
将被移除,作为从核心 Django 代码库中移除所有 django.contrib
引用的目标的一部分。请改用 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" 键以选择多个 字符串来覆盖或追加到用户提供的 ManyToMany 模型字段的 help_text
。
Model._meta.get_(add|change|delete)_permission
方法将被移除。
会话键 django_language
不再读取以保持向后兼容性。
地理 Sitemaps 将被移除(django.contrib.gis.sitemaps.views.index
和 django.contrib.gis.sitemaps.views.sitemap
)。
django.utils.html.fix_ampersands
、fix_ampersands
模板过滤器和 django.utils.html.clean_html
将在加速弃用后被移除。
请查看 Django 1.5 发布说明 以获取有关这些更改的更多详细信息。
模块 django.utils.simplejson
将被移除。应该改用标准库中的 json
。
函数``django.utils.itercompat.product`将被删除。应该使用Python内置版本。
当INSTALLED_APPS和TEMPLATE_DIRS设置被指定为普通字符串而不是元组时,它们的自动更正将被移除并引发异常。
mimetype
参数将被从 HttpResponse
、SimpleTemplateResponse
和 TemplateResponse
的 __init__
方法中移除。应该改用 content_type
。这也适用于 render_to_response()
快捷方式以及站点地图视图 index()
和 sitemap()
。
当使用迭代器实例化 HttpResponse
,或者当将 content
设置为迭代器时,该迭代器将被立即消耗。
AUTH_PROFILE_MODULE
设置以及 User 模型上的 get_profile()
方法将被移除。
``cleanup``管理命令将被删除。它被``clearsessions``所取代。
daily_cleanup.py 脚本将会被移除。
depth
关键字参数将从 select_related()
中移除。
来自 django.test.utils
的未记录文档的 get_warnings_state()
/restore_warnings_state()
函数以及 django.test.*TestCase 中的 save_warnings_state()
/ restore_warnings_state()
方法已被弃用。应该使用从 Python 2.6 开始可用的 warnings.catch_warnings
上下文管理器。
在 AuthenticationForm
中未记录的 check_for_test_cookie
方法将在加速弃用后被移除。用户子类化这个表单的应该移除对这个方法的调用,并确保他们的身份验证相关视图启用了 CSRF 保护,以确保启用了 cookies。
支持 base36 编码用户 ID(django.contrib.auth.views.password_reset_confirm_uidb36
)的 django.contrib.auth.views.password_reset_confirm()
版本将被移除。如果你的站点在 Django 1.6 上运行时间超过了 PASSWORD_RESET_TIMEOUT_DAYS
,这个更改不会产生影响。如果没有,那么在升级到 Django 1.7 之前生成的任何密码重置链接在升级后将不起作用。
django.utils.encoding.StrAndUnicode
混合类将被移除。
请查看 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
的同义词以取代它。
原有缓存后端 django.core.cache.backends.memcached.CacheClass
后端在Django 1.3中分为两个,以引入对PyLibMC的支持。历史悠久的 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()
缓存的旧版调用方式。
向后兼容的填充程序会自动向 'mail_admins'
日志记录处理程序中添加一个debug-false过滤器。 如果需要的话,日志配置 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
标志设置为模板过滤器函数的属性。
在 1.4 版本中,属性 HttpRequest.raw_post_data
已重命名为 HttpRequest.body
。向后兼容性将被移除,HttpRequest.raw_post_data
将不再起作用。
在 ModelAdmin.response_add()
中,post_url_continue
参数的值必须是 None``(以重定向到新创建的对象的编辑页面)或预格式化的 URL。不再接受字符串格式,例如之前的默认值 ``'../%s/'
。
请查看 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
设置中指定。
请查看 Django 1.2 发布说明 以获取有关这些更改的更多详细信息。
CsrfResponseMiddleware
和 CsrfMiddleware
将被移除。要启用 CSRF 保护,请在表单内使用 {% csrf_token %}
模板标签。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
后,该字段没有扮演任何角色,因此采用了加速的弃用时间表。所有使用 XMLField
的地方可以替换为 TextField
。
django.core.files.storage.Storage
(和其子类)的 open()
方法的未记录的 mixin
参数将被移除。
请查看 Django 1.1 发布说明 以获取有关这些更改的更多详细信息。
AdminSite.root()
方法将被移除,应该使用包含 admin.site.urls
的方式来连接管理页面的URL。
身份验证后端需要在 1.4 版本之前定义布尔属性 supports_object_permissions
和 supports_anonymous_user
,在此之后,将假定所有后端都支持这些选项。
4月 27, 2025