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"
。将删除在不传递参数或关键字参数的情况下调用
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
的setter。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()
方法。将删除对向
JSONField
以及相关的查找和表达式传递编码的JSON字符串字面量的支持。将删除对向
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
参数。将移除向
SimpleTestCase.assertFormError()
和assertFormsetError()
传递errors=None
的未公开功能。将移除
django.contrib.sessions.serializers.PickleSerializer
。在预取关联对象的queryset上使用
QuerySet.iterator()
且不提供chunk_size
参数将不再被允许。将不再允许向关联过滤器传递未保存的模型实例。
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"
模板。将移除向
Expression.asc()
和Expression.desc()
方法传递nulls_first=False
或nulls_last=False
以及OrderBy
表达式的功能。
4.1¶
有关这些更改的更多详细信息,请参阅Django 3.2 版本说明。
将移除向
TestCase.setUpTestData()
中的类属性赋值不支持使用copy.deepcopy()
创建深拷贝的对象的支持。BaseCommand.requires_system_checks
将不支持布尔值。将移除
django.core.validators.EmailValidator
的whitelist
参数和domain_whitelist
属性。将移除
default_app_config
模块变量。TransactionTestCase.assertQuerysetEqual()
在与字符串值比较时将不再自动调用queryset上的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
)中设置用户语言。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值的编码格式的支持。将移除对管理站点中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()
将被移除。允许
InlineModelAdmin.has_add_permission()
在没有obj
参数的情况下定义的垫片将被移除。
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()
将不再设置 ETags。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()
的向后兼容的垫片。将移除
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
属性。将移除允许
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
。将移除以下函数和类的
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
将被移除。迁移管理命令的
--list
选项将被移除。ssi
模板标签将被移除。在
if
模板标签中,对=
比较运算符的支持将被移除。允许
Storage.get_available_name()
和Storage.save()
在没有max_length
参数的情况下定义的反向兼容垫片将被移除。对
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
。对没有迁移的应用程序的自动同步将被移除。迁移将对所有应用程序强制执行,除非您向
migrate
传递--run-syncdb
选项。没有迁移的应用程序的 SQL 管理命令,
sql
、sqlall
、sqlclear
、sqldropindexes
和sqlindexes
将被移除。对自动加载
initial_data
夹具和初始 SQL 数据的支持将被移除。所有模型都需要在已安装的应用程序内定义,或声明显式的
app_label
。此外,在加载其应用程序之前,将无法导入它们。特别是,无法在其应用程序的根包内导入模型。模型和表单
IPAddressField
将被移除。为了与历史迁移兼容,将保留一个存根字段。AppCommand.handle_app()
将不再受支持。RequestSite
和get_current_site()
将不再可从django.contrib.sites.models
导入。通过
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()
将被移除。使用
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
将被移除。
1.8¶
有关这些更改的更多详细信息,请参阅 Django 1.6 版本说明。
django.contrib.comments
将被移除。以下事务管理 API 将被移除
TransactionMiddleware
,装饰器和上下文管理器
autocommit
、commit_on_success
和commit_manually
(在django.db.transaction
中定义),函数
commit_unless_managed
和rollback_unless_managed
(也在django.db.transaction
中定义),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 方法而引入的向后兼容的垫片。这会影响以下类:BaseModelAdmin
、ChangeList
、BaseCommentNode
、GenericForeignKey
、Manager
、SingleRelatedObjectDescriptor
和ReverseSingleRelatedObjectDescriptor
。移除为了重命名属性
ChangeList.root_query_set
和ChangeList.query_set
而引入的向后兼容的垫片。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
设置将被移除。不再使用硬编码的字符串 *按住“Control”(或 Mac 上的“Command”)键可选择多个项目。* 来覆盖或附加到表单中多对多模型字段的用户提供的
help_text
,无论是在模型层还是表单层。Model._meta.get_(add|change|delete)_permission
方法将被移除。会话密钥
django_language
将不再出于向后兼容性而读取。地理位置 Sitemap 将被移除(
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()
快捷方式和 Sitemap 视图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()
以及save_warnings_state()
/restore_warnings_state()
django.test.*TestCase方法已弃用。请改用从 Python 2.6 开始提供的warnings.catch_warnings
上下文管理器。将移除
AuthenticationForm
中未公开的check_for_test_cookie
方法,且该移除将提前进行。继承此表单的用户应移除对该方法的调用,并确保其与身份验证相关的视图受到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
混合类。
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 1.3将
django.core.cache.backends.memcached.CacheClass
后端拆分为两个。为了支持django.core.cache.backends.memcached.MemcachedCache
,将移除历史CacheClass
。django.contrib.localflavor.uk
中以UK为前缀的对象只能通过其以GB为前缀的名称访问(GB是英国正确的ISO 3166代码)。在1.4版本中,
IGNORABLE_404_URLS
已取代IGNORABLE_404_STARTS
和IGNORABLE_404_ENDS
设置。将移除这两个设置。表单向导已在1.4版本中进行了重构,以使用基于类的视图和可插拔后端。将移除以前的实现。
将移除调用
cache_page()
的旧方法。将移除向
'mail_admins'
日志处理程序自动添加debug-false过滤器的向后兼容性垫片。如果需要,LOGGING
设置应显式包含此过滤器。将移除内置截断函数
django.utils.text.truncate_words()
和django.utils.text.truncate_html_words()
,改用django.utils.text.Truncator
类。在1.4版本中,
django.contrib.gis.geoip.GeoIP
类已移至django.contrib.gis.geoip
——django.contrib.gis.utils
中的快捷方式将被移除。将移除
django.conf.urls.defaults
。include()
、patterns()
和url()
函数,以及handler404
和handler500
现在可通过django.conf.urls
使用。将从
django.core.management
中移除setup_environ()
和execute_manager()
函数。这也意味着旧的(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/'
)将不再被接受。
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版本,届时将假定所有后端都将支持这些选项。