本文档概述了根据弃用政策 deprecation policy 弃用后,各个Django版本将以向后不兼容的方式删除或更改的情况。 通常,可以在之前的两个版本的发行说明中找到有关每个项目的更多详细信息。
查看 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 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_ROOTSTEMPLATE_CONTEXT_PROCESSORSTEMPLATE_DEBUGTEMPLATE_DIRSTEMPLATE_LOADERSTEMPLATE_STRING_IF_INVALIDdjango.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.utildjango.contrib.gis.db.backends.utildjango.db.backends.utildjango.forms.utilModelAdmin.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.backenddjango.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,在此之后,将假定所有后端都支持这些选项。8月 06, 2024