# documentação Django 4.0.8.dev20220803071047

# Linha do tempo de depreciações no Django

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.

## 5.0

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.

## 4.1

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.

## 4.0

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.

## 3.1

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.

## 3.0

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.

## 2.1

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.

## 2.0

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.

## 1.10

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.

## 1.9

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.

## 1.8

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.

## 1.7

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.

## 1.6

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.

## 1.5

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`.

## 1.4

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.

## 1.3

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.