本文档概述了按照弃用政策,按照向后不兼容的方式删除或更改各种Django部分(根据其弃用情况)。 有关每个项目的更多详细信息通常可以在两个版本的发行说明中找到。
有关这些更改的更多详细信息,请参阅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
参数将被删除。{% 包含 %}
模板标签的情况下,异常的沉默将被删除。DatabaseIntrospection.get_indexes()
将被删除。authenticate()
方法将需要request
作为第一个位置参数。django.db.models.permalink()
装饰器将被删除。USE_ETAGS
设置将被删除。 CommonMiddleware
和django.utils.cache.patch_response_headers()
将不再设置ETag。Model._meta.has_auto_field
属性将被删除。url()
中支持iLmsu#
的正则表达式组将被删除。Widget.render()
方法,而不会使用renderer
参数。有关这些更改的更多详细信息,请参阅Django 1.9 release notes。
django.dispatch.signals.Signal.disconnect()
的weak
参数将被删除。django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()
将被删除。django.forms.extras
包将被删除。assignment_tag
帮助器将被删除。assertsRedirects
的host
参数将被删除。 当路径相同时,允许绝对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
include()
的app_name
参数将被删除。include()
的三元组的支持将被删除。Field._get_val_from_obj()
将被删除,有利于Field.value_from_object()
。django.template.loaders.eggs.Loader
将被删除。contrib.auth
视图的current_app
参数将被删除。callable_obj
keyword argument to
SimpleTestCase.assertRaisesMessage()
will be removed.ModelAdmin
方法上的allow_tags
属性将被删除。enclosure
keyword argument to SyndicationFeed.add_item()
will be
removed.django.template.loader.LoaderOrigin
和django.template.base.StringOrigin
别名为django.template.base.Origin
将被删除。有关这些更改的更多详细信息,请参阅Django 1.10 release notes。
makemigrations - 退出
选项将被删除。django.contrib.gis.geos.GEOSGeometry
的get_srid()
和set_srid()
方法。get_x()
,set_x()
,get_y()
,set_y()
,get_z()
和set_z()
django.contrib.gis.geos.Point
的方法将被删除。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()
方法的自定义相关管理器类的垫片将被删除。User.is_authenticated()
和User.is_anonymous()
作为方法。Model._meta
的私有属性virtual_fields
将被删除。Model._meta.add_field()
中的Field.contribute_to_class()
和virtual
中的私有关键字参数virtual_only
被删除。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()
function and the classes it uses: EscapeData
,
EscapeBytes
, EscapeText
, EscapeString
, and EscapeUnicode
will
be removed.escape
过滤器将更改为使用django.utils.html.conditional_escape()
。Manager.use_for_related_fields
将被删除。Manager
继承将遵循MRO继承规则,Meta.manager_inheritance_from_future
选择加入此行为将被删除。settings.MIDDLEWARE_CLASSES
的旧式中间件的支持将被删除。有关这些更改的详细信息,请参阅Django 1.8 release notes。
quote_name_unless_alias
作为调用其SQLCompiler
方法的别名将被删除。firstof
和cycle
模板标记将从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路径的功能将被删除。argparse
)支持optparse
。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
的以下方法和属性:aggregate_select
和aggregates
set_aggregate_mask
,add_aggregate
和append_aggregate_mask
。django.template.resolve_variable
将被移除。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
参数将被删除。has_changed()
重命名为django.forms.Form._has_changed()
的垫片将被删除。removetags
模板过滤器将被删除。strip_entities()
中的remove_tags()
和django.utils.html
函数将被删除。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
属性将被删除。form_class
被定义为没有默认值的FormMixin.get_form()
参数将被删除。ALLOWED_INCLUDE_ROOTS
TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_DEBUG
TEMPLATE_DIRS
TEMPLATE_LOADERS
TEMPLATE_STRING_IF_INVALID
django.template.loader.BaseLoader
。get_template()
and
select_template()
won’t accept a
Context
in their
render()
method anymore.dict
和后端相关的模板对象,而不是Context
和Template
。current_app
参数:django.shortcuts.render()
一个django.template.Context()
django.template.RequestContext()
django.template.response.TemplateResponse()
context_instance
和dictionary
参数: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()
MIDDLEWARE_CLASSES
是否在'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
中,都将启用会话验证。django.db.models.Field.related
将被删除。migrate
管理命令的--list
选项将被删除。ssi
模板标记。if
模板标记中=
比较运算符的支持。Storage.save()
参数的情况下定义Storage.get_available_name()
和max_length
ModelFormMixin.success_url
中的旧版%(<foo>)s
语法的支持。GeoQuerySet
aggregate methods collect()
, extent()
, extent3d()
,
make_line()
, and unionagg()
will be removed.ContentType.name
的功能将被删除。allow_migrate
的旧签名的支持。 它从allow_migrate(self, db, 模型)
变为allow_migrate(self, db, app_label, model_name = None, ** hints)
。{% 循环 %
的语法将被删除。Signer
的警告将成为异常。有关这些更改的详细信息,请参阅Django 1.7 release notes。
django.utils.dictconfig
将被删除。django.utils.importlib
将被移除。django.utils.tzinfo
将被删除。django.utils.unittest
将被删除。syncdb
命令。django.db.models.signals.post_syncdb
和django.db.models.signals.pre_syncdb
将被删除。allow_migrate
将不再自动变为allow_syncdb
。--run-syncdb
选项传递到migrate
。sql
,sqlall
,sqlclear
,sqldropindexes
和sqlindexes
,将被删除。initial_data
夹具和初始SQL数据将被删除。app_label
。
此外,在加载应用程序之前不能导入它们。 特别是,不可能在其应用程序的根包中导入模型。IPAddressField
将被删除。 将保留存根字段以与历史迁移兼容。AppCommand.handle_app()
将不再受支持。get_current_site()
和RequestSite
将无法从django.contrib.sites.models
导入。runfcgi
管理命令的FastCGI支持将被删除。 请使用WSGI部署您的项目。django.utils.datastructures.SortedDict
将被删除。 使用Python标准库中的collections.OrderedDict
。ModelAdmin.declared_fieldsets
将被删除。utils.py
实例已重命名为util.py
,以统一所有util和utils引用。
提供向后兼容性的模块将被删除:django.contrib.admin.util
django.contrib.gis.db.backends.util
django.db.backends.util
django.forms.util
ModelAdmin.get_formsets
将被移除。get_backend_timeout()
方法重命名为BaseMemcachedCache._get_memcache_timeout()
的向后兼容性垫片将被删除。dumpdata
的-n
和--natural
选项将被删除。serializers.serialize()
的use_natural_keys
参数将被删除。django.forms.forms.get_declared_fields()
将被删除。DateTimeField
与SplitDateTimeWidget
的功能将被删除。WSGIRequest.REQUEST
属性。django.utils.datastructures.MergeDict
将被删除。zh-tw
和zh-cn
语言代码将被删除,并被zh-hant
和zh-hans
语言代码。django.utils.functional.memoize
将被删除。django.core.cache.get_cache
将被删除。 向CACHES
添加适当的条目,然后使用django.core.cache.caches
。django.db.models.loading
将被移除。requires_system_checks
将被删除,以便于BaseCommand.requires_model_validation
。 管理验证程序将被管理员检查替换。default_validator_class
和ModelAdmin.validator_class
属性。ModelAdmin.validate()
将被删除。check_field
将会被移除,以支持django.db.backends.DatabaseValidation.validate_field
方法。validate
管理命令。django.utils.module_loading.import_string
将被移除,以便于使用django.utils.module_loading.import_by_path
。url
和ssi
模板标记将从future
模板标记库(在1.3 / 1.4弃用期间使用)中删除。django.utils.text.javascript_quote
将被移除。TEST_
。ModelChoiceField
和ModelMultipleChoiceField
的cache_choices选项。RedirectView.permanent
属性的默认值将从True
更改为False
。django.contrib.flatpages.sitemaps.FlatPageSitemap
将会被移除,以支持django.contrib.sitemaps.FlatPageSitemap
。django.test.utils.TestTemplateLoader
将被删除。django.contrib.contenttypes.generic
模块将被删除。django.db.models.sql.where.Constraint
和django.db.models.sql.where.WhereNode.make_atom()
将被删除。有关这些更改的详细信息,请参阅Django 1.6 release notes。
django.contrib.comments
将被移除。TransactionMiddleware
,commit_on_success
中定义的装饰器和上下文管理器autocommit
,django.db.transaction
和commit_manually
rollback_unless_managed
中定义的函数commit_unless_managed
和django.db.transaction
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_name
已重命名为Model._meta.module_name
。get_query_set
和类似的查询集方法。 这会影响以下类:ChangeList
,ReverseSingleRelatedObjectDescriptor
,Manager
,GenericForeignKey
,BaseCommentNode
,BaseModelAdmin
和SingleRelatedObjectDescriptor
。ChangeList.query_set
和ChangeList.root_query_set
。django.contrib
将被删除,作为从核心Django代码库中删除所有django.views.defaults.shortcut
引用的目标的一部分。 而应使用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.RadioChoiceInput
将被删除,以便于使用django.forms.widgets.RadioInput
。django.test.simple.DjangoTestSuiteRunner
和类django.test.simple
将被删除。 而应使用django.test.runner.DiscoverRunner
。django.test._doctest
将被删除。 而是使用Python标准库中的doctest模块。CACHE_MIDDLEWARE_ANONYMOUS_ONLY
设置将被删除。help_text
的字符串将不再由Django在模型或表单层执行。Model._meta.get_(add|change|delete)_permission
方法将被删除。django_language
以实现向后兼容性。django.contrib.gis.sitemaps.views.sitemap
和django.contrib.gis.sitemaps.views.index
)。fix_ampersands
,加速淘汰后,将删除django.utils.html.fix_ampersands
模板过滤器和django.utils.html.clean_html
。有关这些更改的详细信息,请参阅Django 1.5 release notes。
django.utils.simplejson
将被删除。 标准库提供json
,应该使用它。django.utils.itercompat.product
。 应该使用Python内置版本。HttpResponse
,SimpleTemplateResponse
和TemplateResponse
的__init__
方法的mimetype
将被删除。
应使用content_type
。 这也适用于render_to_response()
快捷方式和站点地图视图,index()
和sitemap()
。HttpResponse
时,或当将content
设置为迭代器时,该迭代器将立即消耗。get_profile()
设置和AUTH_PROFILE_MODULE
方法将被删除。cleanup
管理命令。 它替换为clearsessions
。daily_cleanup.py
脚本将被删除。depth
关键字参数将从select_related()
中删除。get_warnings_state()
/restore_warnings_state()
functions from django.test.utils
and the save_warnings_state()
/
restore_warnings_state()
django.test。*测试用例 方法已被弃用。 使用从Python 2.6开始的warnings.catch_warnings
上下文管理器。AuthenticationForm
中的未记录的check_for_test_cookie
方法将在加速淘汰后移除。 将此表单子类化的用户应该删除对此方法的调用,并确保他们的auth相关视图受CSRF保护,这将确保启用Cookie。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()
装饰器。有关这些更改的详细信息,请参阅Django 1.4 release notes。
django.contrib.databrowse
将被删除。django.contrib.localflavor
将在加速淘汰后移除。django.contrib.markup
将在加速淘汰后移除。django.utils.hashcompat
和django.utils.copycompat
以及函数django.utils.itercompat.any
和django.utils.itercompat.all
将被删除。 应该使用Python内置版本。csrf_view_exempt
和csrf_response_exempt
装饰器将被删除。 由于1.4 csrf_view_exempt
是一个无操作(返回相同的函数),csrf_response_exempt
已成为django.views.decorators.csrf.csrf_exempt
,应该用于替换它。django.core.cache.backends.memcached.CacheClass
后端被分为两个,以引入对PyLibMC的支持。 将删除历史django.core.cache.backends.memcached.MemcachedCache
以支持CacheClass
。django.contrib.localflavor.uk
的英式前缀对象只能通过其GB前缀名称访问(GB是英国的正确ISO 3166代码)。IGNORABLE_404_ENDS
和IGNORABLE_404_STARTS
的设置已被IGNORABLE_404_URLS
取代。 他们将被删除。cache_page()
的传统方法将被删除。'mail_admins'
日志处理程序自动添加一个debug-false过滤器的向后兼容性填充将被删除。 如果需要,LOGGING
设置应明确包括此过滤器。django.utils.text.truncate_html_words()
和django.utils.text.truncate_words()
将被移除,以支持django.utils.text.Truncator
类。django.contrib.gis.geoip.GeoIP
类已在1.4中移动到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
.execute_manager()
和setup_environ()
将从django.core.management
中删除。 这也意味着旧的(pre-1.4)风格的manage.py
文件将不再工作。needs_autoescape
和is_safe
标志设置为模板过滤器函数的属性。HttpRequest.body
已重命名为HttpRequest.raw_post_data
。 向后兼容性将被删除 - HttpRequest.raw_post_data
将不再工作。ModelAdmin.response_add()
中post_url_continue
参数的值必须为None
(重定向到新创建的对象的编辑页面)或预格式化网址。 字符串格式,例如之前的默认值'../%s/'
,将不再被接受。有关这些更改的详细信息,请参阅Django 1.3 release notes。
SECRET_KEY
的Django将导致异常而不是DeprecationWarning
。 (这是从通常的弃用路径加速;请参阅Django 1.4 release notes。)mod_python
请求处理程序将被删除。 应使用mod_wsgi
处理程序。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.form_hmac
,而使用django.contrib.formtools.utils.security_hash
django.core.servers.basehttp.AdminMediaHandler
。 在其位置使用django.contrib.staticfiles.handlers.StaticFilesHandler
。adminmedia
和模板标签{% admin_media_prefix %} 被移除以支持通用静态文件处理。
(这比通常的弃用路径快;请参阅Django 1.4 release notes。)url
和ssi
模板标签,以便每个标签的第一个参数是模板变量,而不是隐含的字符串。 在1.4中,此行为由future
模板标记库中的标记版本提供。sqlreset
和reset
管理命令。supports_inactive_user
属性,并可从自定义后端中删除。transform()
将产生GEOSException
。django.http.SimpleCookie
将被移除,以便于使用django.http.CompatCookie
。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
目录的文件系统路径包含在其值中。CACHE_BACKEND
设置将被删除。 缓存后端应在CACHES
设置中指定。有关这些更改的详细信息,请参阅Django 1.2 release notes。
CsrfMiddleware
和CsrfResponseMiddleware
将被删除。 使用表单中的{% csrf_token %}
模板标记启用CSRF保护。 CsrfViewMiddleware
保留并默认启用。django.contrib.csrf。*
),将在1.2中移动到核心,将被删除。django.contrib.gis.db.backend
模块将被删除,以支持特定的后端。SMTPConnection
将被删除,以支持通用电子邮件后端API。DATABASE_*
系列顶层设置定义数据库连接的功能将被删除。django.db.backends.sqlite3
而不是sqlite3
)的功能。get_db_prep_value
,get_db_prep_save
和get_db_prep_lookup
方法将必须支持多个数据库。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
属性,并可从自定义后端中删除。AnonymousUser
类。 将不再检查supports_anonymous_user
变量,并可从自定义后端中删除。load_template_source
类的功能,以及与内置模板加载程序一起提供的Loader
函数,以实现向后兼容性。django.utils.translation.get_partial_date_formats()
和django.utils.translation.get_date_formats()
。 这些功能将被删除;请使用区域设置感知django.utils.formats.get_format()
获取相应的格式。DEFAULT_DATE_INPUT_FORMATS
中,常量:django.forms.fields
,DEFAULT_DATETIME_INPUT_FORMATS
和DEFAULT_TIME_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_psycopg2
数据库后端将被删除,请改用postgresql
后端。nb
语言代码将被删除,并已替换为no
语言代码。supports_inactive_user
,直到版本1.5,此时将假设所有后端都将处理非活动用户。django.db.models.fields.XMLField
将被删除。 这已被弃用作为1.3版本的一部分。 已使用加速淘汰计划,因为除去oldforms
后,该字段没有执行任何超出简单TextField
的任何角色。
TextField
的所有用法都可以替换为XMLField
。open()
(和子类)的mixin
方法的未记录的django.core.files.storage.Storage
参数。有关这些更改的详细信息,请参阅Django 1.1 release notes。
AdminSite.root()
。 此方法将删除管理员网址,以便包含admin.site.urls
。supports_anonymous_user
和supports_object_permissions
,直到版本1.4,此时将假定所有后端都将支持这些选项。2017年9月6日