Django Deprecation Timeline
本文档概述了按照deprecation policy,按照向后不兼容的方式删除或更改各种Django部分(根据其弃用情况)。有关每个项目的更多详细信息通常可以在两个版本的发行说明中找到。
2.0
有关这些更改的详细信息,请参阅Django 1.8 release notes。
- 支持直接调用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模板标记使用不正确的解压缩值计数将引发异常,而不是以静默方式失败。
- 使用虚线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的以下方法和属性:
- 属性:aggregates和aggregate_select
- 方法:add_aggregate,set_aggregate_mask和append_aggregate_mask。
- django.template.resolve_variable将被移除。
- 以下私有API将从django.db.models.options.Options(Model._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.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。
- Django template objects returned by get_template() and select_template() won’t accept a Context in their render() method anymore.
- Template response APIs将分别强制使用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()
- 将删除对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_syncdb和django.db.models.signals.post_syncdb将被删除。
- 数据库路由器上的allow_syncdb将不再自动变为allow_migrate。
- 系统将删除同步未迁移的应用的旧方法,并且所有应用都必须进行迁移。这包括自动加载initial_data fixtures并支持初始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将被删除。
- 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()将被删除。
- 使用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 release notes。
- django.contrib.comments将被移除。
- 将除去以下事务管理API:
- 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和类似的查询集方法。这会影响以下类: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映像库(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.index和django.contrib.gis.sitemaps.views.sitemap)。
- django.utils.html.fix_ampersands,加速淘汰后,将删除fix_ampersands模板过滤器和django.utils.html.clean_html。
1.6
有关这些更改的详细信息,请参阅Django 1.4 release notes。
- 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 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_STARTS和IGNORABLE_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_safe和needs_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。)
- 将修改url和ssi模板标记,以使每个标记的第一个参数是模板变量,而不是隐含字符串。在1.4中,此行为由future模板标记库中的标记版本提供。
- 将删除reset和sqlreset管理命令。
- 认证后端将需要支持一个非活动用户被传递给处理权限的所有方法。将不再检查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_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 release notes。
- CsrfResponseMiddleware和CsrfMiddleware将被删除。使用表单中的{% 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_save,get_db_prep_value和get_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_FORMATS,DEFAULT_TIME_INPUT_FORMATS和DEFAULT_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_permissions和supports_anonymous_user,直到版本1.4,此时将假定所有后端都将支持这些选项。