本文档概述了根据弃用政策 deprecation policy 弃用后,各个Django版本将以向后不兼容的方式删除或更改的情况。 通常,可以在之前的两个版本的发行说明中找到有关每个项目的更多详细信息。
有关这些更改的更多详细信息,请参阅 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()
方法将被移除。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 值的编码格式的支持。django.core.signing.Signer
签名的支持。django.core.signing.dumps()
签名在 django.core.signing.loads()
中的支持。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()
将被移除。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
参数将被移除。include()
的第一个参数传递的支持。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
中使用错误的解包值数量将引发异常,而不会默默失败。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
属性将被移除。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
。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
、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
将被移除。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
参数将被移除。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
。django.utils.text.javascript_quote
将被移除。TEST_
为前缀。ModelChoiceField
和 ModelMultipleChoiceField
的 cache_choices
选项支持。RedirectView.permanent
属性的默认值将从 True
更改为 False
。django.contrib.sitemaps.FlatPageSitemap
将被移除,取而代之的是 django.contrib.flatpages.sitemaps.FlatPageSitemap
。django.test.utils.TestTemplateLoader
将被移除。django.contrib.contenttypes.generic
模块将被移除。django.db.models.sql.where.WhereNode.make_atom()
和 django.db.models.sql.where.Constraint
将被移除。请查看 Django 1.6 发布说明 以获取有关这些更改的更多详细信息。
django.contrib.comments
将被移除。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
也将被移除。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
设置将被移除。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
将在加速弃用后被移除。请查看 Django 1.5 发布说明 以获取有关这些更改的更多详细信息。
django.utils.simplejson
将被移除。应该改用标准库中的 json
。mimetype
参数将被从 HttpResponse
、SimpleTemplateResponse
和 TemplateResponse
的 __init__
方法中移除。应该改用 content_type
。这也适用于 render_to_response()
快捷方式以及站点地图视图 index()
和 sitemap()
。HttpResponse
,或者当将 content
设置为迭代器时,该迭代器将被立即消耗。AUTH_PROFILE_MODULE
设置以及 User 模型上的 get_profile()
方法将被移除。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。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
取代。它们将被移除。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
标志设置为模板过滤器函数的属性。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
属性,并且可以从自定义后端中移除。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
目录中。CACHE_BACKEND
设置将被移除。缓存后端应该在 CACHES
设置中指定。请查看 Django 1.2 发布说明 以获取有关这些更改的更多详细信息。
CsrfResponseMiddleware
和 CsrfMiddleware
将被移除。要启用 CSRF 保护,请在表单内使用 {% csrf_token %}
模板标签。CsrfViewMiddleware
仍然存在并且默认启用。django.contrib.csrf.*
)已在 1.2 版本中移动到核心,它们将被移除。django.contrib.gis.db.backend
模块将被移除,取而代之的是特定的后端模块。SMTPConnection
将被移除,取而代之的是通用的电子邮件后端 API。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。supports_object_permissions
和 supports_anonymous_user
,在此之后,将假定所有后端都支持这些选项。12月 04, 2023