Este documento lista quando várias peças do Django serão removidas ou alteradas de modo incompatível com versões anteriores, culminando com a sua depreciação, conforme política de depreciação. Mais detalhes sobre cada item geralmente podem ser encontrados nas notas da release de duas versões anteriores.
See the Django 5.2 release notes for more details on these changes.
The all
keyword argument of django.contrib.staticfiles.finders.find()
will be removed.
The fallback to request.user
when user
is None
in
django.contrib.auth.login()
and django.contrib.auth.alogin()
will be
removed.
The ordering
keyword argument of the PostgreSQL specific aggregation
functions django.contrib.postgres.aggregates.ArrayAgg
,
django.contrib.postgres.aggregates.JSONBAgg
, and
django.contrib.postgres.aggregates.StringAgg
will be removed.
See the Django 5.0 release notes for more details on these changes.
The DjangoDivFormRenderer
and Jinja2DivFormRenderer
transitional form
renderers will be removed.
Support for passing positional arguments to BaseConstraint
will be
removed.
request
will be required in the signature of
ModelAdmin.lookup_allowed()
subclasses.
The django.db.models.sql.datastructures.Join
will no longer fallback to
get_joining_columns()
.
The get_joining_columns()
method of ForeignObject
and
ForeignObjectRel
will be removed.
The ForeignObject.get_reverse_joining_columns()
method will be removed.
The default scheme for forms.URLField
will change from "http"
to
"https"
.
Support for calling format_html()
without passing args or kwargs will be
removed.
Support for cx_Oracle
will be removed.
BaseDatabaseOperations.field_cast_sql()
will be removed.
The ChoicesMeta
alias to django.db.models.enums.ChoicesType
will be
removed.
The Prefetch.get_current_queryset()
method will be removed.
The get_prefetch_queryset()
method of related managers and descriptors
will be removed.
get_prefetcher()
and prefetch_related_objects()
will no longer
fallback to get_prefetch_queryset()
.
The FORMS_URLFIELD_ASSUME_HTTPS
transitional setting will be removed.
See the Django 5.1 release notes for more details on these changes.
The ModelAdmin.log_deletion()
and LogEntryManager.log_action()
methods will be removed.
The undocumented django.utils.itercompat.is_iterable()
function and the
django.utils.itercompat
module will be removed.
The django.contrib.gis.geoip2.GeoIP2.coords()
method will be removed.
The django.contrib.gis.geoip2.GeoIP2.open()
method will be removed.
Support for passing positional arguments to Model.save()
and
Model.asave()
will be removed.
The setter for django.contrib.gis.gdal.OGRGeometry.coord_dim
will be
removed.
django.urls.register_converter()
will no longer allow overriding existing
converters.
The check
keyword argument of CheckConstraint
will be removed.
The OS_OPEN_FLAGS
attribute of
FileSystemStorage
will be removed.
The get_cache_name()
method of FieldCacheMixin
will be removed.
See the Django 4.2 release notes for more details on these changes.
The BaseUserManager.make_random_password()
method will be removed.
The model’s Meta.index_together
option will be removed.
The length_is
template filter will be removed.
The django.contrib.auth.hashers.SHA1PasswordHasher
,
django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher
, and
django.contrib.auth.hashers.UnsaltedMD5PasswordHasher
will be removed.
The model django.contrib.postgres.fields.CICharField
,
django.contrib.postgres.fields.CIEmailField
, and
django.contrib.postgres.fields.CITextField
will be removed. Stub fields
will remain for compatibility with historical migrations.
The django.contrib.postgres.fields.CIText
mixin will be removed.
The map_width
and map_height
attributes of BaseGeometryWidget
will be removed.
The SimpleTestCase.assertFormsetError()
method will be removed.
The TransactionTestCase.assertQuerysetEqual()
method will be removed.
Support for passing encoded JSON string literals to JSONField
and
associated lookups and expressions will be removed.
Support for passing positional arguments to Signer
and
TimestampSigner
will be removed.
The DEFAULT_FILE_STORAGE
and STATICFILES_STORAGE
settings will be
removed.
The django.core.files.storage.get_storage_class()
function will be
removed.
See the Django 4.0 release notes for more details on these changes.
The SERIALIZE
test setting will be removed.
The undocumented django.utils.baseconv
module will be removed.
The undocumented django.utils.datetime_safe
module will be removed.
The default value of the USE_TZ
setting will change from False
to
True
.
The default sitemap protocol for sitemaps built outside the context of a
request will change from 'http'
to 'https'
.
The extra_tests
argument for DiscoverRunner.build_suite()
and
DiscoverRunner.run_tests()
will be removed.
The django.contrib.postgres.aggregates.ArrayAgg
, JSONBAgg
, and
StringAgg
aggregates will return None
when there are no rows instead
of []
, []
, and ''
respectively.
The USE_L10N
setting will be removed.
The USE_DEPRECATED_PYTZ
transitional setting will be removed.
Support for pytz
timezones will be removed.
The is_dst
argument will be removed from:
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()
The django.contrib.gis.admin.GeoModelAdmin
and OSMGeoAdmin
classes
will be removed.
The undocumented BaseForm._html_output()
method will be removed.
The ability to return a str
, rather than a SafeString
, when rendering
an ErrorDict
and ErrorList
will be removed.
See the Django 4.1 release notes for more details on these changes.
The SitemapIndexItem.__str__()
method will be removed.
The CSRF_COOKIE_MASKED
transitional setting will be removed.
The name
argument of django.utils.functional.cached_property()
will
be removed.
The opclasses
argument of
django.contrib.postgres.constraints.ExclusionConstraint
will be removed.
The undocumented ability to pass errors=None
to
SimpleTestCase.assertFormError()
and assertFormsetError()
will be
removed.
django.contrib.sessions.serializers.PickleSerializer
will be removed.
The usage of QuerySet.iterator()
on a queryset that prefetches related
objects without providing the chunk_size
argument will no longer be
allowed.
Passing unsaved model instances to related filters will no longer be allowed.
created=True
will be required in the signature of
RemoteUserBackend.configure_user()
subclasses.
Support for logging out via GET
requests in the
django.contrib.auth.views.LogoutView
and
django.contrib.auth.views.logout_then_login()
will be removed.
The django.utils.timezone.utc
alias to datetime.timezone.utc
will be
removed.
Passing a response object and a form/formset name to
SimpleTestCase.assertFormError()
and assertFormsetError()
will no
longer be allowed.
The django.contrib.gis.admin.OpenLayersWidget
will be removed.
The django.contrib.auth.hashers.CryptPasswordHasher
will be removed.
The "django/forms/default.html"
and
"django/forms/formsets/default.html"
templates will be removed.
The ability to pass nulls_first=False
or nulls_last=False
to
Expression.asc()
and Expression.desc()
methods, and the OrderBy
expression will be removed.
See the Django 3.2 release notes for more details on these changes.
Support for assigning objects which don’t support creating deep copies with
copy.deepcopy()
to class attributes in TestCase.setUpTestData()
will
be removed.
BaseCommand.requires_system_checks
won’t support boolean values.
The whitelist
argument and domain_whitelist
attribute of
django.core.validators.EmailValidator
will be removed.
The default_app_config
module variable will be removed.
TransactionTestCase.assertQuerysetEqual()
will no longer automatically
call repr()
on a queryset when compared to string values.
django.core.cache.backends.memcached.MemcachedCache
will be removed.
Support for the pre-Django 3.2 format of messages used by
django.contrib.messages.storage.cookie.CookieStorage
will be removed.
See the Django 3.0 release notes for more details on these changes.
django.utils.http.urlquote()
, urlquote_plus()
, urlunquote()
, and
urlunquote_plus()
will be removed.
django.utils.encoding.force_text()
and smart_text()
will be removed.
django.utils.translation.ugettext()
, ugettext_lazy()
,
ugettext_noop()
, ungettext()
, and ungettext_lazy()
will be
removed.
django.views.i18n.set_language()
will no longer set the user language in
request.session
(key django.utils.translation.LANGUAGE_SESSION_KEY
).
alias=None
will be required in the signature of
django.db.models.Expression.get_group_by_cols()
subclasses.
django.utils.text.unescape_entities()
will be removed.
django.utils.http.is_safe_url()
will be removed.
See the Django 3.1 release notes for more details on these changes.
The PASSWORD_RESET_TIMEOUT_DAYS
setting will be removed.
The undocumented usage of the isnull
lookup with non-boolean values
as the right-hand side will no longer be allowed.
The django.db.models.query_utils.InvalidQuery
exception class will be
removed.
The django-admin.py
entry point will be removed.
The HttpRequest.is_ajax()
method will be removed.
Support for the pre-Django 3.1 encoding format of cookies values used by
django.contrib.messages.storage.cookie.CookieStorage
will be removed.
Support for the pre-Django 3.1 password reset tokens in the admin site (that use the SHA-1 hashing algorithm) will be removed.
Support for the pre-Django 3.1 encoding format of sessions will be removed.
Support for the pre-Django 3.1 django.core.signing.Signer
signatures
(encoded with the SHA-1 algorithm) will be removed.
Support for the pre-Django 3.1 django.core.signing.dumps()
signatures
(encoded with the SHA-1 algorithm) in django.core.signing.loads()
will be
removed.
Support for the pre-Django 3.1 user sessions (that use the SHA-1 algorithm) will be removed.
The get_response
argument for
django.utils.deprecation.MiddlewareMixin.__init__()
will be required and
won’t accept None
.
The providing_args
argument for django.dispatch.Signal
will be
removed.
The length
argument for django.utils.crypto.get_random_string()
will
be required.
The list
message for ModelMultipleChoiceField
will be removed.
Support for passing raw column aliases to QuerySet.order_by()
will be
removed.
The model NullBooleanField
will be removed. A stub field will remain for
compatibility with historical migrations.
django.conf.urls.url()
will be removed.
The model django.contrib.postgres.fields.JSONField
will be removed. A
stub field will remain for compatibility with historical migrations.
django.contrib.postgres.forms.JSONField
,
django.contrib.postgres.fields.jsonb.KeyTransform
, and
django.contrib.postgres.fields.jsonb.KeyTextTransform
will be removed.
The {% ifequal %}
and {% ifnotequal %}
template tags will be removed.
The DEFAULT_HASHING_ALGORITHM
transitional setting will be removed.
See the Django 2.2 release notes for more details on these changes.
django.utils.timezone.FixedOffset
will be removed.
django.core.paginator.QuerySetPaginator
will be removed.
A model’s Meta.ordering
will no longer affect GROUP BY
queries.
django.contrib.postgres.fields.FloatRangeField
and
django.contrib.postgres.forms.FloatRangeField
will be removed.
The FILE_CHARSET
setting will be removed.
django.contrib.staticfiles.storage.CachedStaticFilesStorage
will be
removed.
RemoteUserBackend.configure_user()
will require request
as the first
positional argument.
Support for SimpleTestCase.allow_database_queries
and
TransactionTestCase.multi_db
will be removed.
See the Django 2.0 release notes for more details on these changes.
The django.db.backends.postgresql_psycopg2
module will be removed.
django.shortcuts.render_to_response()
will be removed.
The DEFAULT_CONTENT_TYPE
setting will be removed.
HttpRequest.xreadlines()
will be removed.
Support for the context
argument of Field.from_db_value()
and
Expression.convert_value()
will be removed.
The field_name
keyword argument of QuerySet.earliest()
and
latest()
will be removed.
See the Django 2.1 release notes for more details on these changes.
django.contrib.gis.db.models.functions.ForceRHR
will be removed.
django.utils.http.cookie_date()
will be removed.
The staticfiles
and admin_static
template tag libraries will be
removed.
django.contrib.staticfiles.templatetags.static()
will be removed.
The shim to allow InlineModelAdmin.has_add_permission()
to be defined
without an obj
argument will be removed.
See the Django 1.11 release notes for more details on these changes.
contrib.auth.views.login()
, logout()
, password_change()
, password_change_done()
, password_reset()
, password_reset_done()
, password_reset_confirm()
, e password_reset_complete()
serão removidos.
The extra_context
parameter of contrib.auth.views.logout_then_login()
will be removed.
django.test.runner.setup_databases()
será removido.
django.utils.translation.string_concat()
será removido.
django.core.cache.backends.memcached.PyLibMCCache
will no longer support
passing pylibmc
behavior settings as top-level attributes of OPTIONS
.
The host
parameter of django.utils.http.is_safe_url()
will be
removed.
Silencing of exceptions raised while rendering the {% include %}
template
tag will be removed.
DatabaseIntrospection.get_indexes()
será removido.
The authenticate()
method of authentication backends will require
request
as the first positional argument.
The django.db.models.permalink()
decorator will be removed.
The USE_ETAGS
setting will be removed. CommonMiddleware
and
django.utils.cache.patch_response_headers()
will no longer set ETags.
O atributo Model._meta.has_auto_field
será removido.
url()
’s support for inline flags in regular expression groups ((?i)
,
(?L)
, (?m)
, (?s)
, and (?u)
) will be removed.
Suporte para Widget.render()
métodos sem o argumento renderer
será removido.
Veja as notas da release do Django 1.9 para mais detalhes sobre essas mudanças.
O argumento weak
de django.dispatch.signals.Signal.disconnect()
será removido.
django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()
será removida.
O pacote django.forms.extras
será removido.
O helper assignment_tag
será removido.
O argumento host
em assertsRedirects
será removido. A camada de compatibilidade que permite que URLs absolutas sejam consideradas iguais as URLs relativas quando o caminho é idêntico também será removido.
Field.rel
será removido.
O atributo Field.remote_field.to
será removido.
O argumento on_delete
para ForeignKey
e OneToOneField
será requerido.
django.db.models.fields.add_lazy_relation()
será removido.
Quando o suporte a time zone estiver habilitado, backends de banco de dados que não suportam time zones não converterão mais datetimes aware para valores naive em UTC quando esses valores são passados como parâmetros para consultas SQL executadas fora do ORM, ex. com cursor.execute()
.
O decorator django.contrib.auth.tests.utils.skipIfCustomUser()
será removido.
As classes GeoManager
e GeoQuerySet
serão removidas.
O módulo django.contrib.gis.geoip
será removido.
A verificação de supports_recursion
para template loaders será removido de:
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()
Os métodos de template loaders load_template()
e load_template_sources()
serão removidos.
O argumento template_dirs
para template loaders será removido.
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()
O método django.template.loaders.base.Loader.__call__()
será removido.
Suporte para views com erros customizados com um parâmetro posicional será removido.
o atributo mime_type
de django.utils.feedgenerator.Atom1Feed
e django.utils.feedgenerator.RssFeed
será removido para promover content_type
.
The app_name
argument to django.conf.urls.include()
will be
removed.
Suporte a passagem de tuplas de 3 elementos como primeiro argumento no include()
será removido.
Suporte para setar o namespace de uma instância de URL sem um namespace de aplicação será removido.
Field._get_val_from_obj()
será removido para promover Field.value_from_object()
.
django.template.loaders.eggs.Loader
será removido.
O parâmetro current_app
para views contrib.auth
será removido.
O argumento chave callable_obj
para SimpleTestCase.assertRaisesMessage()
será removido.
Suporte para o atributo allow_tags
em métodos de ModelAdmin
serão removidos.
O argumento chave enclosure
em SyndicationFeed.add_item()
será removido.
Os aliases de django.template.loader.LoaderOrigin
e django.template.base.StringOrigin
para django.template.base.Origin
serão removidos.
Veja a Django 1.10 release notes para mais detalhes sobre essas mudanças.
A opção makemigrations --exit
será removida.
Suporte para atribuição direta a uma reversa relação foreign key ou many-to-many deve ser removido
Os métodos get_srid()
e set_srid()
em django.contrib.gis.geos.GEOSGeometry
serão removidos.
Os métodos get_x()
, set_x()
, get_y()
, set_y()
, get_z()
, e set_z()
em django.contrib.gis.geos.Point
serão removidos.
Os métodos get_coords()
e set_coords()
em django.contrib.gis.geos.Point
serão removidos.
A propriedade cascaded_union
em django.contrib.gis.geos.MultiPolygon
serão removidos.
django.utils.functional.allow_lazy()
será removido.
A opção shell --plain
será removido.
O módulo django.core.urlresolvers
será removido.
O model CommaSeparatedIntegerField
será removido. Um campo stub irá permanecer para compatibilidade com migrations passadas.
O suporte para o método do template Context.has_key()
será removido.
o Suporte aos métodos django.core.files.storage.Storage.accessed_time()
, created_time()
, e modified_time()
serão removidos.
O suporte para filtros de consulta usando o nome do modelo quando é definido um Meta.default_related_name
será removido.
O filtro de consulta __search
e o método DatabaseOperations.fulltext_search_sql()
serão removidos.
A base para suporte à classes de “managers” personalizados sem um método _apply_rel_filters()
será removido.
O uso de User.is_authenticated()
e User.is_anonymous()
como métodos não será mais suportado.
O atributo privado virtual_fields
do Model._meta
será removido.
O argumento privado nomeado virtual_only
no Field.contribute_to_class()
e na virtual
no Model._meta.add_field()
será removido.
As “views” javascript_catalog()
e json_catalog()
serão removidas.
A função django.contrib.gis.utils.precision_wkt()
será removida.
Em uma herança de tabelas múltiplas, a promoção implícita de um campo OneToOneField
para um parent_link
será removida.
O suporte para Widget._format_value()
será removido.
Os métodos get_directory_name()
e get_filename()
do FileField
serão removidos.
A função mark_for_escaping()
e as classes que ela usa: EscapeData
, EscapeBytes
, EscapeText
, EscapeString
, e EscapeUnicode
serão removidas.
O filtro escape
será alterado para que use o django.utils.html.conditional_escape()
.
Manager.use_for_related_fields
será removido.
A herança de um Manager
seguirá regras de herança MRO e a Meta.manager_inheritance_from_future
para escolher esse comportamento será removida.
O suporte para middleware do tipo old-style usando o setting settings.MIDDLEWARE_CLASSES
será removido.
Veja as notas da release do Django 1.8 para mais detalhes sobre essas mudanças.
Suporte para a possibilidade de chamar o SQLCompiler
diretamente como um alias para o seu método quote_name_unless_alias
será removido.
As tags de template cycle
and firstof
serão removidas da biblioteca de tags de template future
.
django.conf.urls.patterns()
será removido.
Suporte para o argumento prefix
do django.conf.urls.i18n.i18n_patterns()
será removido.
SimpleTestCase.urls
será removido.
Usar uma contagem incorreta de valores despacotados em uma tag de template for
irá lançar uma exceção ao invés de falhar silenciosamente.
A habilidade de inverter URLs usando a notação de ponto para definir o “caminho” Python será removida.
A habilidade de usar um caminho Python contendo pontos para os settings LOGIN_URL
and LOGIN_REDIRECT_URL
será removida.
Suporte para o módulo optparse
será descartado para custom management commands (trocado pleo módulo argparse
).
A classe django.core.management.NoArgsCommand
será removida. Use em seu lugar a classe BaseCommand
que não recebe argumentos por padrão.
O módulo django.core.context_processors
será removido.
O módulo django.db.models.sql.aggregates
será removido.
O módulo django.contrib.gis.db.models.sql.aggregates
será removido.
Os métodos e propriedades de django.db.sql.query.Query
a seguir serão removidas:
Propriedades: aggregates
e aggregate_select
Métodos: add_aggregate
, set_aggregate_mask
, e append_aggregate_mask
.
django.template.resolve_variable
será removido.
As APIs privadas abaixo serão removidas de 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()
O argumento error_message
de django.forms.RegexField
será removido.
O filtro unordered_list
não irá mais suportar listas do estilo antigo.
Suporte a argumentos view
no formato string para url()
será removido.
O calço de compatibilidade com versões anteriores para renomear django.forms.Form._has_changed()
para has_changed()
foi removido.
O filter de template removetags
será removido.
As funções remove_tags()
e strip_entities()
em django.utils.html
serão removidas.
O argumento is_admin_site
para django.contrib.auth.views.password_reset()
será removido.
django.db.models.field.subclassing.SubfieldBase
será removido.
django.utils.checksums
será removido; suas funcionalidades estão inclusas no django-localflavor
1.1+.
O atributo original_content_type_id
em django.contrib.admin.helpers.InlineAdminForm
será removido.
O calço de compatibilidade com versões anteriores para permitir FormMixin.get_form()
ser definido sem valor padrão para o seu argumento form_class
foi removido.
As configurações abaixo serão removidas:
ALLOWED_INCLUDE_ROOTS
TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_DEBUG
TEMPLATE_DIRS
TEMPLATE_LOADERS
TEMPLATE_STRING_IF_INVALID
O alias de compatibilidade com versões anteriores django.template.loader.BaseLoader
será removido.
Objetos de template do Django retornados por get_template()
e select_template()
não irão mais aceitar um Context
em seu método render()
.
APIs de resposta de templates irão reforçar o uso de dict
e objetos de template dependentes de backend ao invés de Context
e Template
respectivamente.
O current_app
parâmetro para as funções e classes abaixo será removido:
django.shortcuts.render()
django.template.Context()
django.template.RequestContext()
django.template.response.TemplateResponse()
Os parâmetros dictionary
e context_instance
para as funções abaixo serão removidos
django.shortcuts.render()
django.shortcuts.render_to_response()
django.template.loader.render_to_string()
O parâmetro dirs
para as funções abaixo será removido:
django.template.loader.get_template()
django.template.loader.select_template()
django.shortcuts.render()
django.shortcuts.render_to_response()
Verificação de sessão será habilitado independentemente de 'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
estar ou não dentro de MIDDLEWARE_CLASSES
.
O atributo privado django.db.models.Field.related
será removido.
A opção --list
do comando migrate
será removido.
A tag template ssi
será removida.
Suporte para o operador de comparação =
na tag de template if
será removido.
O calço de compatibilidade com versões anteriores para permitir Storage.get_available_name()
e Storage.save()
ser definido sem um argumento max_length
será removido.
Suporte para a sintaxe legada %(<foo>)s
no ModelFormMixin.success_url
será removido.
Os métodos do GeoQuerySet
de agregação collect()
, extent()
, extent3d()
, make_line()
, e unionagg()
serão removidos.
A abilidade para especificar ContentType.name
ao criar uma instância será removido.
Suporte para a assinatura antiga de allow_migrate
será removido. Ele mudou de allow_migrate(self, db, model)
para allow_migrate(self, db, app_label, model_name=None, **hints)
.
Suporte para a sintaxe de {% cycle %}
que utiliza argumentos separados por vírgulas será removido.
O aviso que Signer
emite quando é fornecido um separador inválido irá se tornar uma exceção.
Veja as notas da release do Django 1.7 para mais detalhes nessas mudanças.
django.utils.dictconfig
será removido.
django.utils.importlib
será removido.
django.utils.tzinfo
será removido.
django.utils.unittest
será removido.
O comando syncdb
será removido.
django.db.models.signals.pre_syncdb
e django.db.models.signals.post_syncdb
serão removidos.
allow_syncdb
em roteadores de bancos de dados não irão mais ficar automaticamente allow_migrate
.
A sincronização automática de apps sem migrações será removida. Migrations se tornará compulsória para todos os apps a não ser que você passe a opção --run-syncdb
para o comando migrate
.
Os SQL management commands para apps sem migrações, sql
, sqlall
, sqlclear
, sqldropindexes
, and sqlindexes
, será removido.
Suporte para carregamento automático de fixtures initial_data
e dados SQL iniciais serão removidos.
Todos os modelos precisarão ser definidos dentro de aplicações instaladas ou declarados explicitamente app_label
. Além disso, não será possível importá-los antes de suas aplicações serem carregadas. Em particular, não será possível importar modelos dentro do pacote root de suas aplicações.
O model e form IPAddressField
serão removidos. Um campo stub irá permanecer para compatibilidade com migrations passadas.
AppCommand.handle_app()
não será mais suportado.
RequestSite
e get_current_site()
não irão mais ser importáveis de django.contrib.sites.models
.
Suporte a FastCGI pelo comando de administração runfcgi
será removido. Por favor faça deploy do seu projeto usando WSGI.
django.utils.datastructures.SortedDict
será removido. Utilize collections.OrderedDict
da biblioteca padrão do Python.
ModelAdmin.declared_fieldsets
será removido.
Instâncias de util.py
no código base do Django foram renomeadas para utils.py
em um esforço para unificar todos as referências a util e utils. Os módulos que fornecem compatibilidade com versões anteriores serão removidos.
django.contrib.admin.util
django.contrib.gis.db.backends.util
django.db.backends.util
django.forms.util
ModelAdmin.get_formsets
será removido.
O calço de compatibilidade com versões anteriores introduzido para renomear o método BaseMemcachedCache._get_memcache_timeout()
para get_backend_timeout()
foi removido.
As opções``–natural`` e -n
para dumpdata
serão removidas.
O argumento use_natural_keys
para serializers.serialize()
será removido.
A API privada django.forms.forms.get_declared_fields()
será removida.
A abilidade de utilizar o SplitDateTimeWidget
com DateTimeField
será removido.
A propriedade WSGIRequest.REQUEST
será removida.
A classe django.utils.datastructures.MergeDict
será removida.
Os códigos de linguagens zh-cn
e zh-tw
serão removidos e trocados pelos códigos de linguagem zh-hans
e ``zh-hant``respectivamente.
O “internal” django.utils.functional.memoize
será removido.
django.core.cache.get_cache
será removido. Ao invés dele, adicione as entradas convenientes a CACHES
e use django.core.cache.caches
.
django.db.models.loading
será removido.
Passar argumentos que possam ser invocados para querysets não será mais possível.
BaseCommand.requires_model_validation``será removido em favor de ``requires_system_checks
. Admin validators serão trocados por admin checks.
Os atributos ModelAdmin.validator_class
e default_validator_class
serão removidos.
ModelAdmin.validate()
será removido.
django.db.backends.DatabaseValidation.validate_field
será removido em favor do método check_field
.
O comando de administração validate
será removido.
django.utils.module_loading.import_by_path
será removido em favor de``django.utils.module_loading.import_string``.
As tags de template ssi
e url
serão removidas da biblioteca de tags de template future
(usado durante o período de depreciação 1.3/1.4).
django.utils.text.javascript_quote
será removido.
A configuração de bancos de dados de teste com entradas independentes nos settings dos bancos de dados, prefixado com TEST_
, não será mais suportado.
The cache_choices
option to ModelChoiceField
and
ModelMultipleChoiceField
will be removed.
O valor padrão do RedirectView.permanent
atributo irá mudar de True
para False
.
django.contrib.sitemaps.FlatPageSitemap
será removido em favor de django.contrib.flatpages.sitemaps.FlatPageSitemap
.
A API privada django.test.utils.TestTemplateLoader
será removida.
O módulo django.contrib.contenttypes.generic
será removido.
As APIs privadas django.db.models.sql.where.WhereNode.make_atom()
e django.db.models.sql.where.Constraint
serão removidos.
Veja as notas de release Django 1.6 para mais detalhes sobre essas mudanças.
django.contrib.comments
será removido.
As APIs de gerenciamento de transações seguintes serão removidas:
TransactionMiddleware
,
Os decorators e context managers autocommit
, commit_on_success
, e commit_manually
, definidos em django.db.transaction
,
As funções commit_unless_managed
e rollback_unless_managed
, também definidos em django.db.transaction
,
O setting TRANSACTIONS_MANAGED
.
As tags de template cycle
e firstof
irão auto-escapar seus argumentos. Em 1.6 e 1.7, esse comportamento é providenciado pela versão dessas tags da biblioteca de tags de template future
.
The SEND_BROKEN_LINK_EMAILS
setting will be removed. Add the
django.middleware.common.BrokenLinkEmailsMiddleware
middleware to
your MIDDLEWARE_CLASSES
setting instead.
django.middleware.doc.XViewMiddleware
será removido. Ao invés dele, use django.contrib.admindocs.middleware.XViewMiddleware
.
Model._meta.module_name
foi renomeado para model_name
.
Removido o calço de compatibilidade com versões anteriores introduzido para renomear get_query_set
e métodos do queryset similares. Isso afeta as seguintes classes: BaseModelAdmin
, ChangeList
, BaseCommentNode
, GenericForeignKey
, Manager
, SingleRelatedObjectDescriptor
e ReverseSingleRelatedObjectDescriptor
.
Remove o calço de compatibilidade com versões anteriores introduzido para renomear os atributos ChangeList.root_query_set
e ChangeList.query_set
.
django.views.defaults.shortcut
será removido, como parte do objetivo de remover todas as referências a django.contrib
do núcleo do banco de dados do Django. Ao invés dele use django.contrib.contenttypes.views.shortcut
. django.conf.urls.shortcut
também será removido.
Support for the Python Imaging Library (PIL) module will be removed, as it no longer appears to be actively maintained & does not work on Python 3.
As APIs privadas seguintes serão removidas:
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
será removido em favor de django.forms.widgets.RadioChoiceInput
.
O módulo django.test.simple
e a classe django.test.simple.DjangoTestSuiteRunner
será removida. Utilize no lugar dele django.test.runner.DiscoverRunner
.
O módulo django.test._doctest
será removido. Ao invés disso use o módulo doctest module da biblioteca padrão do Python.
O setting CACHE_MIDDLEWARE_ANONYMOUS_ONLY
será removido.
Utilização do Hold down “Control”, or “Command” em um Mac, para selecionar mais de um. string para sobreescrever ou apensar para o help_text
providenciado pelos usuários em forms para campos de um model ManyToMany não serão mais realizados pelo Django seja na camada do model ou na camada de forms.
A permissão Model._meta.get_(add|change|delete)_permission
será removida.
A chave de sessão django_language
não será mais lida para compatibilidade com versões anteriores.
Geographic Sitemaps será removido (django.contrib.gis.sitemaps.views.index
e django.contrib.gis.sitemaps.views.sitemap
).
django.utils.html.fix_ampersands
, o filtro de template fix_ampersands
e django.utils.html.clean_html
serão removidos seguindo uma depreciação acelerada.
Veja as notas da release do Django 1.5 para mais detalhes sobre essas mudanças.
O módulo django.utils.simplejson
será removido. A biblioteca padrão provê json
que deve ser usado em seu lugar.
A função django.utils.itercompat.product
será removida. A versão embutida no Python deve ser usada em seu lugar.
Auto-correção dos settings INSTALLED_APPS e TEMPLATE_DIRS quando eles são especificados como uma string ao invés de uma tupla será removido e irá lançar uma exceção.
O argumento mimetype
para métodos __init__
de HttpResponse
, SimpleTemplateResponse
, e TemplateResponse
, será removido. content_type
deve ser usado em seu lugar. Isso também se aplica ao atalho render_to_response()
e as views de sitemap, index()
e sitemap()
.
Quando HttpResponse
é instanciado com um iterator, ou quando content
é setado para um iterator, esse iterator será imediatamente consumido.
O setting AUTH_PROFILE_MODULE
, e o método get_profile()
do model User serão removidos.
O comando de gerenciamento cleanup
será removido. Ele foi trocado por clearsessions
.
O script daily_cleanup.py
será removido.
O argumento chave depth
será removido de select_related()
.
As funções não documentadas get_warnings_state()
/restore_warnings_state()
do django.test.utils
e os métodos save_warnings_state()
/ restore_warnings_state()
django.test.*TestCase foram depreciados. Use o warnings.catch_warnings
context manager disponível a partir do Python 2.6 em seu lugar.
O método não documentado check_for_test_cookie
na AuthenticationForm
será removido seguindo uma depreciação acelerada. Usuários fazendo subclasses desse form devem remover as chamadas para esse método, e ao invés disso garantir que suas views relacionadas a autenticação são protegidas de CSRF, o que garante que os cookies estão habilitados.
The version of django.contrib.auth.views.password_reset_confirm()
that
supports base36 encoded user IDs
(django.contrib.auth.views.password_reset_confirm_uidb36
) will be
removed. If your site has been running Django 1.6 for more than
PASSWORD_RESET_TIMEOUT_DAYS
, this change will have no effect. If not,
then any password reset links generated before you upgrade to Django 1.7
won’t work after the upgrade.
The django.utils.encoding.StrAndUnicode
mix-in will be removed.
Veja as notas da release do Django 1.4 para mais detalhes sobre essas mudanças.
django.contrib.databrowse
será removido.
django.contrib.localflavor
será removido seguindo uma depreciação acelerada.
django.contrib.markup
será removido seguindo uma depreciação acelerada.
Os módulos de compatibilidade django.utils.copycompat
e django.utils.hashcompat
assim como as funções django.utils.itercompat.all
e django.utils.itercompat.any
serão removidos. Em seu lugar utiize as versões embutidas no Python.
Os decorators csrf_response_exempt
e csrf_view_exempt
serão removidos. Desde a versão 1.4 csrf_response_exempt
tem sido um no-op (ele retorna a mesma função), e csrf_view_exempt
tem sido um sinônimo para django.views.decorators.csrf.csrf_exempt
, que deve ser usado para trocá-lo.
O backend django.core.cache.backends.memcached.CacheClass
foi dividido em dois no Django 1.3 para introduzir o suporte a PyLibMC. O histórico CacheClass
será removido em favor de django.core.cache.backends.memcached.MemcachedCache
.
Os objetos django.contrib.localflavor.uk
prefixados com UK só serão acessíveis através de seus nomes prefixados com GB (GB é o código ISO 3166 corretp para o Reino Unido).
Os settings IGNORABLE_404_STARTS
e IGNORABLE_404_ENDS
foram substituídos por IGNORABLE_404_URLS
na release 1.4. Eles serão removidos.
O form wizard foi refatorado para usar views baseads em classes com backends plugáveis na 1.4. A implementação prévia será removida.
Formas legadas de chamar cache_page()
será removida.
O calço de compatibilidade para adicionar automaticamente um filtro de debug-false para o logging handler 'mail_admins'
será removido. O setting LOGGING
deve incluir esse filtro explicitamente se ele for desejado.
As funções embutidas de truncamento django.utils.text.truncate_words()
e django.utils.text.truncate_html_words()
serão removidas em favor da classe django.utils.text.Truncator
.
A classe django.contrib.gis.geoip.GeoIP
foi movida para django.contrib.gis.geoip
na 1.4 – o atalho em django.contrib.gis.utils
será removido.
django.conf.urls.defaults
will be removed. The functions
include()
, patterns()
, and url()
, plus
handler404
and handler500
are now available through django.conf.urls
.
As funções setup_environ()
e execute_manager()
serão removidas do django.core.management
. Isso também significa que o velho (pre-1.4) estilo do arquivo manage.py
não irá mais funcionar.
Ativar as flags is_safe
e needs_autoescape
como atributos de funções de filtro de template não será mais suportado.
O atributo HttpRequest.raw_post_data
foi renomeado para HttpRequest.body
na 1.4. A compatibilidade com versões anteriores será removida – HttpRequest.raw_post_data
não irá mais funcionar.
O valor para o parâmetro post_url_continue
em ModelAdmin.response_add()
terá que ser None
(para redirecionar para novos objetos edit page criados) ou uma url pré-formatada. Formatos de strings, tais como o antigo padrão '../%s/'
, não serão mais aceitos.
Veja as notas de release do Django 1.3 para mais detalhes sobre essas mudanças.
Começar o Django sem um SECRET_KEY
irá resultar em uma exceção ao invés de DeprecationWarning
. (Isso foi acelerado do caminho usual de depreciação; veja as notas de release do Django 1.4.)
O request handler mod_python
será removido. O handler mod_wsgi
deve ser usado em seu lugar.
O atributo de template
em objetos django.test.client.Response
retornados por test client será removido. O atributo templates
deve ser usado em seu lugar.
The django.test.simple.DjangoTestRunner
will be removed.
Instead use a unittest
-native class. The features of the
django.test.simple.DjangoTestRunner
(including fail-fast and
Ctrl-C test termination) can be provided by unittest.TextTestRunner
.
A função não documentada django.contrib.formtools.utils.security_hash
será removida. Ao invés dela use django.contrib.formtools.utils.form_hmac
.
Os módulos baseados em funções de view genéricas serão removidos em favor de seus equivalentes baseados em classes, descritos aqui.
O django.core.servers.basehttp.AdminMediaHandler
será removido. Em seu lugar use django.contrib.staticfiles.handlers.StaticFilesHandler
.
As bibliotecas de tags de template adminmedia
e a tag de template {% admin_media_prefix %}
serão removidas em favor da manipulação genérica de arquivos estáticos. (Isso é mais rápido do que o caminho de depreciação usual; veja as notas de release do Django 1.4.)
As tags de template url
e ssi
serão modificadas de modo que o primeiro argumento para cada tag é uma variável de template, não uma string implícita. Na 1.4, esse comportamento era fornecido por uma versão da tag dentro da biblioteca de tags future
.
Os comandos de administração reset
e sqlreset
serão removidos.
Backends de autenticação terão que suportar um usuário inativo sendo passado para todos os métodos que lidem com permissões. O atributo supports_inactive_user
não será mais verificado e pode ser removido de backends customizados.
O transform()
irá lançar GEOSException
quando chamado em uma geometria sem valor SRID.
django.http.CompatCookie
será removido em favor de django.http.SimpleCookie
.
django.core.context_processors.PermWrapper
e django.core.context_processors.PermLookupDict
serão removidos em favor dos correspondentes django.contrib.auth.context_processors.PermWrapper
e django.contrib.auth.context_processors.PermLookupDict
, respectivamente.
Os settings MEDIA_URL
ou STATIC_URL
terão que terminar com um slash para garantir que existe uma forma consistente de combinar caminhos nos templates.
django.db.models.fields.URLField.verify_exists
será removido. A funcionalidade foi depreciada em 1.3.1 devido a problemas de segurança e performance intratáveis e seguirá um tempo de depreciação ligeiramente acelerado.
Traduções localizadas sob o então chamado project path serão ignoradas durante o processo de construção da tradução executado em runtime. O setting LOCALE_PATHS
pode ser usado para a mesma tarefa quando incluido o caminho do sistema de arquivos para um diretório de locale
contendo traduções não específicas de apps em seu valor.
O app contrib Markup não irá mais suportar versões da biblioteca de Markdown do Python anteriores a 2.1. Uma linha de tempo acelerada será usada já que isso era uma depreciação relacionada a segurança.
O setting CACHE_BACKEND
será removido. O backend (ou os backends) de cache deve ser especificado no setting CACHES
.
Veja as notas de release do Django 1.2 para mais detalhes sobre essas mudanças.
CsrfResponseMiddleware
e CsrfMiddleware
serão removidos. Use a tag de template {% csrf_token %}``dentro dos forms para habilitar a proteção CSRF. ``CsrfViewMiddleware
permanece e é habilitada por padrão.
Os imports antigos da funcionalidade CSRF (django.contrib.csrf.*
), que foi movido para o core em 1.2, será removido.
O módulo django.contrib.gis.db.backend
será removido em favor dos backends específicos.
SMTPConnection
will be removed in favor of a generic email backend API.
As funções de geração SQL many to many nos backends de banco de dados serão removidos.
A habilidade de usar a família de settings top-level DATABASE_*
para definir conexões de banco de dados será removida.
A habilidade para usar notações curtas para especificar o backend do banco de dados (ex sqlite3
ao invés de django.db.backends.sqlite3
) será removido.
Os métodos get_db_prep_save
, get_db_prep_value
e get_db_prep_lookup
terão que suportar múltiplos bancos de dados.
O model Message
(em django.contrib.auth
), o seu manager no model User
(user.message_set
), e os métodos associados (user.message_set.create()
e user.get_and_delete_messages()
), serão removidos. O framework messages deve ser usado em seu lugar. A variável messages
relacionada e retornada pelo processador de contexto de autenticação também será removida. Note que isso significa que a aplicação admin irá depender do processador de contexto de mensagens.
Backends de autenticação terão que suportar o parâmetro obj
para verificação de permissões. O atributo supports_object_permissions
não irá mais ser checado e pode ser removido dos backends customizados.
Backends de autenticação terá que suportar a classe AnonymousUser
sendo passada para todos os métodos que lidam com permissão. A variável supports_anonymous_user
não irá mais ser checada e pode ser removida dos backends customizados.
A habilidade para especificar um template loader invocável ao invés de uma classe Loader
irá ser removido, assim como as funções load_template_source
que estão incluídas com os template loaders embutidos para compatibilidade com versões anteriores.
django.utils.translation.get_date_formats()
e django.utils.translation.get_partial_date_formats()
. Essas funções serão removidas; use o locale-aware django.utils.formats.get_format()
para obter os formatos apropriados.
Em django.forms.fields
, as contantes: DEFAULT_DATE_INPUT_FORMATS
, DEFAULT_TIME_INPUT_FORMATS
e DEFAULT_DATETIME_INPUT_FORMATS
serão removidas. Utilize django.utils.formats.get_format()
para obter os formatos apropriados.
A habilidade de usar um executor de testes baseado em função será removido, assim como o executor de teste django.test.simple.run_tests()
.
A view views.feed()
e a classe feeds.Feed
em django.contrib.syndication``serão removidos. A view baseada em classe ``views.Feed
deve ser usada em seu lugar.
django.core.context_processors.auth
. Essa release irá remover o método antigo em favor do novo método em django.contrib.auth.context_processors.auth
.
O backend do banco de dados postgresql
será removido, utilize o backend postgresql_psycopg2
em seu lugar.
A linguagem de código no
será removida e foi trocada pela linguagem de código nb
.
Backends de autenticação terão que definir o atributo booleano supports_inactive_user
até a versão 1.5 onde se assumirá que todos os backends irão tratar usuários inativos.
django.db.models.fields.XMLField
será removido. Isso foi depreciado como parte da release 1.3. Um cronograma acelerado de depreciação foi usado porque o campo não preenche nenhum outro propósito além de um simples TextField
desde a remoção de oldforms
. Todos os usos de XMLField
podem ser substituídos com TextField
.
O parâmetro não documentado mixin
para o método open()
de django.core.files.storage.Storage
(e subclasses) serão removidas.
Veja as notas da release do Django 1.1 para mais detalhes sobre essas mudanças.
AdminSite.root()
. Esse método de ligação de URLs admin será removido em favor da inclusão de admin.site.urls
.
Backends de autenticação precisam definir os atributos booleanos supports_object_permissions
e supports_anonymous_user
até a versão 1.4, na qual será assumido que todos os backends suportam essas opções.
abr. 23, 2025