Django弃用时间线

本文档概述了Django的各个部分何时将根据弃用策略在弃用后以向后不兼容的方式删除或更改。有关每个项目的更多详细信息,通常可以在之前两个版本的发布说明中找到。

6.0

有关这些更改的更多详细信息,请参阅Django 5.0发行说明

  • 将删除DjangoDivFormRendererJinja2DivFormRenderer过渡表单渲染器。

  • 将删除对向BaseConstraint传递位置参数的支持。

  • request将成为ModelAdmin.lookup_allowed()子类的签名中必需的参数。

  • django.db.models.sql.datastructures.Join将不再回退到get_joining_columns()

  • ForeignObjectForeignObjectRelget_joining_columns()方法将被删除。

  • ForeignObject.get_reverse_joining_columns()方法将被删除。

  • forms.URLField的默认方案将从"http"更改为"https"

  • 将删除在不传递参数或关键字参数的情况下调用format_html()的支持。

  • 将删除对cx_Oracle的支持。

  • BaseDatabaseOperations.field_cast_sql()将被删除。

  • ChoicesMetadjango.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()将不再允许覆盖现有转换器。

  • 将删除CheckConstraintcheck关键字参数。

  • 将删除FileSystemStorageOS_OPEN_FLAGS属性。

  • 将删除FieldCacheMixinget_cache_name()方法。

5.1

有关这些更改的更多详细信息,请参阅Django 4.2发行说明

  • 将删除BaseUserManager.make_random_password()方法。

  • 将删除模型的Meta.index_together选项。

  • 将删除length_is模板过滤器。

  • 将删除django.contrib.auth.hashers.SHA1PasswordHasherdjango.contrib.auth.hashers.UnsaltedSHA1PasswordHasherdjango.contrib.auth.hashers.UnsaltedMD5PasswordHasher

  • 将删除模型django.contrib.postgres.fields.CICharFielddjango.contrib.postgres.fields.CIEmailFielddjango.contrib.postgres.fields.CITextField。为与历史迁移兼容,存根字段将保留。

  • 将删除django.contrib.postgres.fields.CIText混合。

  • 将删除BaseGeometryWidgetmap_widthmap_height属性。

  • 将删除SimpleTestCase.assertFormsetError()方法。

  • 将删除TransactionTestCase.assertQuerysetEqual()方法。

  • 将删除对向JSONField以及相关的查找和表达式传递编码的JSON字符串字面量的支持。

  • 将删除对向SignerTimestampSigner传递位置参数的支持。

  • 将删除DEFAULT_FILE_STORAGESTATICFILES_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.ArrayAggJSONBAggStringAgg聚合函数在没有行时将返回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.GeoModelAdminOSMGeoAdmin类。

  • 将删除未公开的BaseForm._html_output()方法。

  • 将删除在渲染ErrorDictErrorList时返回str而不是SafeString的功能。

有关这些更改的更多详细信息,请参阅Django 4.1发行说明

  • 将删除SitemapIndexItem.__str__()方法。

  • 将删除CSRF_COOKIE_MASKED过渡设置。

  • 将删除django.utils.functional.cached_property()name参数。

  • 将移除django.contrib.postgres.constraints.ExclusionConstraintopclasses参数。

  • 将移除向SimpleTestCase.assertFormError()assertFormsetError()传递errors=None的未公开功能。

  • 将移除django.contrib.sessions.serializers.PickleSerializer

  • 在预取关联对象的queryset上使用QuerySet.iterator()且不提供chunk_size参数将不再被允许。

  • 将不再允许向关联过滤器传递未保存的模型实例。

  • RemoteUserBackend.configure_user()子类的签名中将需要created=True

  • 将移除在django.contrib.auth.views.LogoutViewdjango.contrib.auth.views.logout_then_login()中通过GET请求注销的支持。

  • 将移除django.utils.timezone.utcdatetime.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=Falsenulls_last=False以及OrderBy表达式的功能。

4.1

有关这些更改的更多详细信息,请参阅Django 3.2 版本说明

  • 将移除向TestCase.setUpTestData()中的类属性赋值不支持使用copy.deepcopy()创建深拷贝的对象的支持。

  • BaseCommand.requires_system_checks将不支持布尔值。

  • 将移除django.core.validators.EmailValidatorwhitelist参数和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.Signalproviding_args参数。

  • django.utils.crypto.get_random_string()length参数将是必需的。

  • 将移除ModelMultipleChoiceFieldlist消息。

  • 将移除向QuerySet.order_by()传递原始列别名的支持。

  • 将移除NullBooleanField模型。为了与旧的迁移保持兼容性,将保留一个存根字段。

  • django.conf.urls.url()将被移除。

  • 将移除django.contrib.postgres.fields.JSONField模型。为了与旧的迁移保持兼容性,将保留一个存根字段。

  • django.contrib.postgres.forms.JSONFielddjango.contrib.postgres.fields.jsonb.KeyTransformdjango.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.FloatRangeFielddjango.contrib.postgres.forms.FloatRangeField将被移除。

  • 将移除FILE_CHARSET设置。

  • 将移除django.contrib.staticfiles.storage.CachedStaticFilesStorage

  • RemoteUserBackend.configure_user()将需要request作为第一个位置参数。

  • 将移除对SimpleTestCase.allow_database_queriesTransactionTestCase.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()

  • 将移除staticfilesadmin_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 设置将被移除。CommonMiddlewaredjango.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 辅助函数将被移除。

  • assertsRedirectshost 参数将被移除。允许将绝对 URL 与路径相同的相对 URL 视为相等的兼容性层也将被移除。

  • Field.rel 将被移除。

  • Field.remote_field.to 属性将被移除。

  • ForeignKeyOneToOneFieldon_delete 参数将是必需的。

  • django.db.models.fields.add_lazy_relation() 将被移除。

  • 启用时区支持后,不支持时区的数据库后端在将此类值作为参数传递给在 ORM 之外执行的 SQL 查询(例如,使用 cursor.execute())时,将不再将感知时区的日期时间转换为 UTC 中的朴素值。

  • django.contrib.auth.tests.utils.skipIfCustomUser() 装饰器将被移除。

  • GeoManagerGeoQuerySet 类将被移除。

  • 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.Atom1Feeddjango.utils.feedgenerator.RssFeedmime_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.LoaderOrigindjango.template.base.StringOrigindjango.template.base.Origin 的别名将被移除。

有关这些更改的更多详细信息,请参见Django 1.10 发行说明

  • makemigrations --exit 选项将被移除。

  • 将移除对直接赋值给反向外键或多对多关系的支持。

  • django.contrib.gis.geos.GEOSGeometryget_srid()set_srid() 方法将被移除。

  • django.contrib.gis.geos.Pointget_x()set_x()get_y()set_y()get_z()set_z() 方法将被移除。

  • django.contrib.gis.geos.Pointget_coords()set_coords() 方法将被移除。

  • django.contrib.gis.geos.MultiPolygoncascaded_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_onlyModel._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() 函数及其使用的类:EscapeDataEscapeBytesEscapeTextEscapeStringEscapeUnicode

  • 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 弃用期间使用)中移除 cyclefirstof 模板标签。

  • 将移除 django.conf.urls.patterns()

  • 将移除对 django.conf.urls.i18n.i18n_patterns()prefix 参数的支持。

  • 将移除 SimpleTestCase.urls

  • for 模板标签中使用不正确的解包值数量将引发异常,而不是静默失败。

  • 将移除使用带点的 Python 路径反转 URL 的功能。

  • 将移除为 LOGIN_URLLOGIN_REDIRECT_URL 设置使用带点的 Python 路径的功能。

  • 将删除对 optparse 的支持,用于自定义管理命令(由 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 的以下方法和属性

    • 属性:aggregatesaggregate_select

    • 方法:add_aggregateset_aggregate_maskappend_aggregate_mask

  • 将移除 django.template.resolve_variable

  • 将从 django.db.models.options.OptionsModel._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.RegexFielderror_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

  • 模板响应 API 将强制使用 dict 和与后端相关的模板对象,而不是分别使用 ContextTemplate

  • 将移除以下函数和类的 current_app 参数

    • django.shortcuts.render()

    • django.template.Context()

    • django.template.RequestContext()

    • django.template.response.TemplateResponse()

  • 将移除以下函数的 dictionarycontext_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_syncdbdjango.db.models.signals.post_syncdb 将被移除。

  • 数据库路由器上的allow_syncdb 将不再自动变为allow_migrate

  • 对没有迁移的应用程序的自动同步将被移除。迁移将对所有应用程序强制执行,除非您向migrate 传递--run-syncdb 选项。

  • 没有迁移的应用程序的 SQL 管理命令,sqlsqlallsqlclearsqldropindexessqlindexes 将被移除。

  • 对自动加载initial_data 夹具和初始 SQL 数据的支持将被移除。

  • 所有模型都需要在已安装的应用程序内定义,或声明显式的app_label。此外,在加载其应用程序之前,将无法导入它们。特别是,无法在其应用程序的根包内导入模型。

  • 模型和表单IPAddressField 将被移除。为了与历史迁移兼容,将保留一个存根字段。

  • AppCommand.handle_app() 将不再受支持。

  • RequestSiteget_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() 将被移除。

  • 使用SplitDateTimeWidgetDateTimeField 的功能将被移除。

  • WSGIRequest.REQUEST 属性将被移除。

  • django.utils.datastructures.MergeDict 类将被移除。

  • zh-cnzh-tw 语言代码将被移除,并分别被zh-hanszh-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_classdefault_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

  • ssiurl 模板标签将从future 模板标签库(在 1.3/1.4 过时期间使用)中移除。

  • django.utils.text.javascript_quote 将被移除。

  • 作为数据库设置中独立条目的数据库测试设置(以TEST_ 为前缀)将不再受支持。

  • ModelChoiceFieldModelMultipleChoiceFieldcache_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,

    • 装饰器和上下文管理器 autocommitcommit_on_successcommit_manually(在 django.db.transaction 中定义),

    • 函数 commit_unless_managedrollback_unless_managed(也在 django.db.transaction 中定义),

    • TRANSACTIONS_MANAGED 设置。

  • cyclefirstof 模板标签将自动转义其参数。在 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 方法而引入的向后兼容的垫片。这会影响以下类:BaseModelAdminChangeListBaseCommentNodeGenericForeignKeyManagerSingleRelatedObjectDescriptorReverseSingleRelatedObjectDescriptor

  • 移除为了重命名属性 ChangeList.root_query_setChangeList.query_set 而引入的向后兼容的垫片。

  • django.views.defaults.shortcut 将被移除,这是移除核心 Django 代码库中所有 django.contrib 引用的目标的一部分。改用 django.contrib.contenttypes.views.shortcutdjango.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.indexdjango.contrib.gis.sitemaps.views.sitemap)。

  • django.utils.html.fix_ampersandsfix_ampersands 模板过滤器和 django.utils.html.clean_html 将在加速弃用之后被移除。

1.7

有关这些更改的更多详细信息,请参阅 Django 1.5 版本说明

  • django.utils.simplejson 模块将被移除。标准库提供 json,应改用它。

  • django.utils.itercompat.product 函数将被移除。应改用 Python 内置版本。

  • INSTALLED_APPSTEMPLATE_DIRS 设置指定为普通字符串而不是元组时,自动更正功能将被移除并引发异常。

  • HttpResponseSimpleTemplateResponseTemplateResponse__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.copycompatdjango.utils.hashcompat以及函数django.utils.itercompat.alldjango.utils.itercompat.any。应改用Python内置版本。

  • 将移除csrf_response_exemptcsrf_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_STARTSIGNORABLE_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.defaultsinclude()patterns()url()函数,以及handler404handler500现在可通过django.conf.urls使用。

  • 将从django.core.management中移除setup_environ()execute_manager()函数。这也意味着旧的(1.4之前的)manage.py文件样式将不再有效。

  • 将不再支持将is_safeneeds_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发行说明。)

  • 将修改urlssi模板标签,以便每个标签的第一个参数都是模板变量,而不是隐含的字符串。在1.4版本中,future模板标签库中提供了此行为的标签版本。

  • 将移除resetsqlreset管理命令。

  • 身份验证后端需要支持将非活动用户传递给处理权限的所有方法。supports_inactive_user属性将不再被检查,可以从自定义后端中移除。

  • 当对没有SRID值的几何体调用transform()时,它将引发GEOSException

  • django.http.CompatCookie移除,改用django.http.SimpleCookie

  • django.core.context_processors.PermWrapperdjango.core.context_processors.PermLookupDict移除,分别改用对应的django.contrib.auth.context_processors.PermWrapperdjango.contrib.auth.context_processors.PermLookupDict

  • 需要MEDIA_URLSTATIC_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发行说明

  • CsrfResponseMiddlewareCsrfMiddleware移除。在表单内使用{% 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_saveget_db_prep_valueget_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_FORMATSDEFAULT_TIME_INPUT_FORMATSDEFAULT_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_permissionssupports_anonymous_user,直到1.4版本,届时将假定所有后端都将支持这些选项。

返回顶部