Django Deprecation Timeline

本文档概述了按照deprecation policy,按照向后不兼容的方式删除或更改各种Django部分(根据其弃用情况)。有关每个项目的更多详细信息通常可以在两个版本的发行说明中找到。

2.0

有关这些更改的详细信息,请参阅Django 1.8 release notes

  • 支持直接调用SQLCompiler作为调用其quote_name_unless_alias方法的别名将被删除。
  • cyclefirstof模板标记将从future模板标记库中删除(在1.6 / 1.7弃用期间使用)。
  • django.conf.urls.patterns()将被移除。
  • 支持django.conf.urls.i18n.i18n_patterns()prefix参数将被删除。
  • SimpleTestCase.urls将被删除。
  • for模板标记使用不正确的解压缩值计数将引发异常,而不是以静默方式失败。
  • 使用虚线Python路径的reverse()网址的功能将被移除。
  • 对自定义管理命令(替换为argparse)支持optparse
  • 将删除类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将被移除。
  • 以下私有API将从django.db.models.options.OptionsModel._meta)中删除:
    • 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
  • Django template objects returned by get_template() and select_template() won’t accept a Context in their render() method anymore.
  • Template response APIs将分别强制使用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将被删除。
  • migrate管理命令的--list选项将被删除。
  • 将删除ssi模板标记。
  • 将删除if模板标记中=比较运算符的支持。
  • 向后兼容性垫片允许在不带max_length参数的情况下定义Storage.get_available_name()Storage.save()
  • 将删除对ModelFormMixin.success_url中的旧版%(<foo>)s语法的支持。
  • GeoQuerySet aggregate methods collect(), extent(), extent3d(), makeline(), and union() will be removed.
  • 在创建内容类型实例时指定ContentType.name的功能将被删除。
  • 将删除对allow_migrate的旧签名的支持。It changed from allow_migrate(self, db, model) to allow_migrate(self, db, app_label, model_name=None, **hints).

1.9

有关这些更改的详细信息,请参阅Django 1.7 release notes

  • 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
  • 系统将删除同步未迁移的应用的旧方法,并且所有应用都必须进行迁移。这包括自动加载initial_data fixtures并支持初始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将被删除。
  • Django代码库中的util.py实例已重命名为utils.py,以统一所有util和utils引用。提供向后兼容性的模块将被删除:
    • django.contrib.admin.util
    • django.contrib.gis.db.backends.util
    • django.db.backends.util
    • django.forms.util
  • ModelAdmin.get_formsets将被移除。
  • 将会将BaseMemcachedCache._get_memcache_timeout()方法重命名为get_backend_timeout()的向后兼容性垫片将被删除。
  • dumpdata--natural-n选项将被删除。请改用--natural-foreign
  • serializers.serialize()use_natural_keys参数将被删除。请改用use_natural_foreign_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 release notes

  • django.contrib.comments将被移除。
  • 将除去以下事务管理API:
    • TransactionMiddleware
    • django.db.transaction中定义的装饰器和上下文管理器autocommitcommit_on_successcommit_manually
    • 也在django.db.transaction中定义的函数commit_unless_managedrollback_unless_managed
    • 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和类似的查询集方法。这会影响以下类:BaseModelAdminChangeListBaseCommentNodeGenericForeignKeyManagerSingleRelatedObjectDescriptorReverseSingleRelatedObjectDescriptor
  • 删除引入的向后兼容的垫片以重命名属性ChangeList.root_query_setChangeList.query_set
  • django.views.defaults.shortcut将被删除,作为从核心Django代码库中删除所有django.contrib引用的目标的一部分。而应使用django.contrib.contenttypes.views.shortcutdjango.conf.urls.shortcut也会被移除。
  • 对Python映像库(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设置将被删除。
  • 硬编码的使用在Mac上按住“Control”或“Command”可选择多个。用于覆盖或附加到用户提供的help_text的字符串将不再由Django在模型或表单层执行。
  • 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_ampersands,加速淘汰后,将删除fix_ampersands模板过滤器和django.utils.html.clean_html

1.7

有关这些更改的详细信息,请参阅Django 1.5 release notes

  • 模块django.utils.simplejson将被删除。标准库提供json,应该使用它。
  • 将除去函数django.utils.itercompat.product应该使用Python内置版本。
  • 当INSTALLED_APPS和TEMPLATE_DIRS设置指定为纯字符串而不是元组时,将对其进行自动更正,并将引发异常。
  • HttpResponseSimpleTemplateResponseTemplateResponse__init__方法的mimetype将被删除。应使用content_type这也适用于render_to_response()快捷方式和网站地图视图index()sitemap()
  • 当使用迭代器实例化HttpResponse时,或当将content设置为迭代器时,该迭代器将立即消耗。
  • 用户模型上的AUTH_PROFILE_MODULE设置和get_profile()方法将被删除。
  • 将删除cleanup管理命令。它替换为clearsessions
  • daily_cleanup.py脚本将被删除。
  • depth关键字参数将从select_related()中删除。
  • The undocumented get_warnings_state()/restore_warnings_state() functions from django.test.utils and the save_warnings_state()/ restore_warnings_state() django.test.*TestCase methods are deprecated. 使用从Python 2.6开始的warnings.catch_warnings上下文管理器。
  • AuthenticationForm中的未记录的check_for_test_cookie方法将在加速淘汰后移除。将此表单子类化的用户应该删除对此方法的调用,并确保他们的auth相关视图受CSRF保护,这将确保启用Cookie。
  • 将删除支持base36编码用户ID(django.contrib.auth.views.password_reset_confirm_uidb36)的django.contrib.auth.views.password_reset_confirm()的版本。如果您的网站在超过PASSWORD_RESET_TIMEOUT_DAYS的情况下运行Django 1.6,则此更改将无效。如果没有,那么在升级到Django 1.7之前生成的任何密码重置链接将在升级后无法正常工作。
  • django.utils.encoding.StrAndUnicode混合将被删除。定义__str__方法,并应用python_2_unicode_compatible()装饰器。

1.6

有关这些更改的详细信息,请参阅Django 1.4 release notes

  • 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,应该用于替换它。
  • 在Django 1.3中,django.core.cache.backends.memcached.CacheClass后端被分为两个,以引入对PyLibMC的支持。将删除历史CacheClass以支持django.core.cache.backends.memcached.MemcachedCache
  • django.contrib.localflavor.uk的英式前缀对象只能通过其GB前缀名称访问(GB是英国的正确ISO 3166代码)。
  • 在1.4版本中,IGNORABLE_404_STARTSIGNORABLE_404_ENDS的设置已被IGNORABLE_404_URLS取代。他们将被删除。
  • 表单向导已重构为在1.4中使用基于类的视图与可插拔后端。之前的实现将被删除。
  • 调用cache_page()的传统方法将被删除。
  • 向 span> 'mail_admins'日志处理程序自动添加一个debug-false过滤器的向后兼容性填充将被删除。如果需要,LOGGING设置应明确包括此过滤器。
  • 内置截断函数django.utils.text.truncate_words()django.utils.text.truncate_html_words()将被移除,以支持django.utils.text.Truncator类。
  • 在1.4中将GeoIP类移动到了django.contrib.gis.geoip;将删除django.contrib.gis.utils中的快捷方式。
  • django.conf.urls.defaults将被删除。The functions include(), patterns() and url() plus handler404, handler500, are now available through django.conf.urls .
  • 函数setup_environ()execute_manager()将从django.core.management中删除。这也意味着旧的(pre-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(重定向到新创建的对象的编辑页面)或预格式化网址。字符串格式,例如之前的默认值'../%s/',将不再被接受。

1.5

有关这些更改的详细信息,请参阅Django 1.3 release notes

  • 启动不带SECRET_KEY的Django将导致异常而不是DeprecationWarning(这是从通常的弃用路径加速;请参阅Django 1.4 release notes。)
  • mod_python请求处理程序将被删除。应使用mod_wsgi处理程序。
  • 将会删除test client返回的django.test.client.Response对象上的template属性。应使用templates属性。
  • 将删除django.test.simple.DjangoTestRunner而是使用unittest-native类。django.test.simple.DjangoTestRunner(包括fail-fast和Ctrl-C测试终止)的功能当前可以由unittest-native TextTestRunner提供。
  • 将删除未记录的函数django.contrib.formtools.utils.security_hash,而使用django.contrib.formtools.utils.form_hmac
  • 基于功能的通用视图模块将被删除,以支持基于类的等同方案,在此概述here
  • 将删除django.core.servers.basehttp.AdminMediaHandler在其位置使用django.contrib.staticfiles.handlers.StaticFilesHandler
  • 模板标签库adminmedia和模板标签{% admin_media_prefix %} 被移除以支持通用静态文件处理。(这比通常的弃用路径快;请参阅Django 1.4 release notes。)
  • 将修改urlssi模板标记,以使每个标记的第一个参数是模板变量,而不是隐含字符串。在1.4中,此行为由future模板标记库中的标记版本提供。
  • 将删除resetsqlreset管理命令。
  • 认证后端将需要支持一个非活动用户被传递给处理权限的所有方法。将不再检查supports_inactive_user属性,并可从自定义后端中删除。
  • 当在没有SRID值的几何体上调用时,transform()将产生GEOSException
  • django.http.CompatCookie将被移除,以便于使用django.http.SimpleCookie
  • django.core.context_processors.PermWrapper and django.core.context_processors.PermLookupDict will be removed in favor of the corresponding django.contrib.auth.context_processors.PermWrapper and django.contrib.auth.context_processors.PermLookupDict, respectively.
  • 将需要以尾部斜杠结尾的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 release notes

  • CsrfResponseMiddlewareCsrfMiddleware将被删除。使用表单中的{% csrf_token %}模板标记启用CSRF保护。CsrfViewMiddleware保留并默认启用。
  • CSRF功能(django.contrib.csrf.*)的旧导入将在1.2中移动到core,将被删除。
  • django.contrib.gis.db.backend模块将被删除,以支持特定的后端。
  • SMTPConnection将被删除,以支持通用电子邮件后端API。
  • 数据库后端上的许多SQL生成函数将被删除。
  • 使用DATABASE_*系列顶层设置定义数据库连接的功能将被删除。
  • 将删除使用缩写符号来指定数据库后端(即sqlite3而不是django.db.backends.sqlite3)的功能。
  • get_db_prep_saveget_db_prep_valueget_db_prep_lookup方法将必须支持多个数据库。
  • The Message model (in django.contrib.auth), its related manager in the User model (user.message_set), and the associated methods (user.message_set.create() and user.get_and_delete_messages()), will be removed. 应该使用messages framework由认证上下文处理器返回的相关messages变量​​也将被删除。注意,这意味着管理应用程序将依赖于消息上下文处理器。
  • 身份验证后端需要支持obj参数才能进行权限检查。将不再检查supports_object_permissions属性,并可从自定义后端中删除。
  • Authentication backends will need to support the AnonymousUser class being passed to all methods dealing with permissions. 将不再检查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()测试运行器一起删除。
  • The views.feed() view and feeds.Feed class in django.contrib.syndication will be removed. 应使用基于类的视图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 release notes

  • AdminSite.root()此方法将删除管理员网址,以便包含admin.site.urls
  • 身份验证后端需要定义布尔属性supports_object_permissionssupports_anonymous_user,直到版本1.4,此时将假定所有后端都将支持这些选项。