Calendrier d’obsolescence de Django¶
Ce document présente les échéances où divers aspects de Django seront supprimés ou modifiés de manière non rétrocompatible, après une période d’obsolescence, en accord avec la politique d’obsolescence. Plus de détails sur ces différents éléments sont souvent disponibles dans les notes de publication les précédant de deux versions.
5.0¶
Consultez les notes de publication de Django 4.0 pour plus de détails sur ces changements.
- Le réglage de test
SERIALIZE
sera supprimé. - Le module non documenté
django.utils.baseconv
sera supprimé. - Le module non documenté
django.utils.datetime_safe
sera supprimé. - La valeur par défaut du réglage
USE_TZ
va changer deFalse
àTrue
. - Le protocole par défaut pour les plans de site construits en dehors du contexte de la requête changera de
'http'
à'https'
. - L’argument
extra_tests
deDiscoverRunner.build_suite()
et deDiscoverRunner.run_tests()
sera supprimé. - Les agrégats
django.contrib.postgres.aggregates.ArrayAgg
,JSONBAgg
etStringAgg
renvoientNone
lorsqu’il n’y a aucun résultat, au lieu de[]
,[]
et''
, respectivement. - Le réglage
USE_L10N
sera supprimé. - Le réglage temporaire
USE_DEPRECATED_PYTZ
sera supprimé. - La prise en charge des fuseaux horaires
pytz
sera supprimée. - Le paramètre
is_dst
sera supprimé de :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()
- Les classes
django.contrib.gis.admin.GeoModelAdmin
etOSMGeoAdmin
seront supprimées. - La méthode non documentée
BaseForm._html_output()
sera supprimée. - La capacité de renvoyer une chaîne
str
au lieu d’une instanceSafeString
, lors de la production d’unErrorDict
ou d’ErrorList
sera supprimée.
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 ofdjango.utils.functional.cached_property()
will be removed. - The
opclasses
argument ofdjango.contrib.postgres.constraints.ExclusionConstraint
will be removed. - The undocumented ability to pass
errors=None
toSimpleTestCase.assertFormError()
andassertFormsetError()
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 thechunk_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 ofRemoteUserBackend.configure_user()
subclasses.- Support for logging out via
GET
requests in thedjango.contrib.auth.views.LogoutView
anddjango.contrib.auth.views.logout_then_login()
will be removed. - The
django.utils.timezone.utc
alias todatetime.timezone.utc
will be removed. - Passing a response object and a form/formset name to
SimpleTestCase.assertFormError()
andassertFormsetError()
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
ornulls_last=False
toExpression.asc()
andExpression.desc()
methods, and theOrderBy
expression will be removed.
4.1¶
Consultez les notes de publication de Django 3.2 pour plus de détails sur ces changements.
- La prise en charge de l’attribution d’objets ne pouvant pas être copiés profondément par
copy.deepcopy()
à des attributs de classe dansTestCase.setUpTestData()
sera supprimée. BaseCommand.requires_system_checks
ne prendra plus en charge les valeurs booléennes.- L’argument
whitelist
et l’attributdomain_whitelist
dedjango.core.validators.EmailValidator
seront supprimés. - La variable de module
default_app_config
sera supprimée. TransactionTestCase.assertQuerysetEqual()
n’appellera plus automatiquementrepr()
sur un jeu de requête lors de comparaisons avec des valeurs textuelles.django.core.cache.backends.memcached.MemcachedCache
sera supprimée.- La prise en charge du format des messages d’avant Django 3.2 utilisé par
django.contrib.messages.storage.cookie.CookieStorage
sera supprimée.
4.0¶
Consultez les notes de publication de Django 3.0 pour plus de détails sur ces changements.
django.utils.http.urlquote()
,urlquote_plus()
,urlunquote()
eturlunquote_plus()
seront supprimées.django.utils.encoding.force_text()
etsmart_text()
seront supprimées.django.utils.translation.ugettext()
,ugettext_lazy()
,ugettext_noop()
,ungettext()
etungettext_lazy()
seront supprimées.django.views.i18n.set_language()
ne définira plus la langue de l’utilisateur dansrequest.session
(clédjango.utils.translation.LANGUAGE_SESSION_KEY
).alias=None
sera obligatoire dans la signature des sous-classes dedjango.db.models.Expression.get_group_by_cols()
.django.utils.text.unescape_entities()
sera supprimée.django.utils.http.is_safe_url()
sera supprimée.
Consultez les notes de publication de Django 3.1 pour plus de détails sur ces changements.
- Le réglage
PASSWORD_RESET_TIMEOUT_DAYS
sera supprimé. - L’utilisation non documentée de l’expression de requête
isnull
avec des valeurs non booléennes dans la partie droite ne sera plus autorisée. - La classe d’exception
django.db.models.query_utils.InvalidQuery
sera supprimée. - Le point d’entrée
django-admin.py
sera supprimé. - La méthode
HttpRequest.is_ajax()
sera supprimée. - La prise en charge du format de codage des cookies d’avant Django 3.1 utilisé par
django.contrib.messages.storage.cookie.CookieStorage
sera supprimée. - La prise en charge des jetons de réinitialisation des mots de passe d’avant Django 3.1 dans le site d’administration (qui utilise l’algorithme de hachage SHA-1) sera supprimée.
- La prise en charge du format de codage des sessions d’avant Django 3.1 sera supprimée.
- La prise en charge des signatures
django.core.signing.Signer
d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée. - La prise en charge des signatures
django.core.signing.dumps()
d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée dansdjango.core.signing.loads()
. - La prise en charge des sessions d’utilisateurs d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée.
- L’argument
get_response
dedjango.utils.deprecation.MiddlewareMixin.__init__()
sera obligatoire et n’acceptera plusNone
. - L’argument
providing_args
dedjango.dispatch.Signal
sera supprimé. - Le paramètre
length
dedjango.utils.crypto.get_random_string()
sera obligatoire. - Le message
list
deModelMultipleChoiceField
sera supprimé. - La prise en charge de la transmission d’alias de colonnes bruts à
QuerySet.order_by()
sera supprimée. - Le modèle
NullBooleanField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec les migrations historiques. django.conf.urls.url()
sera supprimée.- Le modèle
django.contrib.postgres.fields.JSONField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec l’historique des migrations. django.contrib.postgres.forms.JSONField
,django.contrib.postgres.fields.jsonb.KeyTransform
etdjango.contrib.postgres.fields.jsonb.KeyTextTransform
seront supprimés.- Les balises de gabarit
{% ifequal %}
et{% ifnotequal %}
seront supprimées. - Le réglage temporaire
DEFAULT_HASHING_ALGORITHM
sera supprimé.
3.1¶
Consultez les notes de publication de Django 2.2 pour plus de détails sur ces changements.
django.utils.timezone.FixedOffset
sera supprimée.django.core.paginator.QuerySetPaginator
sera supprimée.- L’attribut
Meta.ordering
des modèles n’affectera plus les requêtesGROUP BY
. django.contrib.postgres.fields.FloatRangeField
etdjango.contrib.postgres.forms.FloatRangeField
seront supprimés.- Le réglage
FILE_CHARSET
sera supprimé. django.contrib.staticfiles.storage.CachedStaticFilesStorage
sera supprimée.RemoteUserBackend.configure_user()
exigerarequest
comme premier paramètre positionnel.- La prise en charge de
SimpleTestCase.allow_database_queries
et deTransactionTestCase.multi_db
sera supprimée.
3.0¶
Consultez les notes de publication de Django 2.0 pour plus de détails sur ces changements.
- Le module
django.db.backends.postgresql_psycopg2
sera supprimé. django.shortcuts.render_to_response()
sera supprimée.- Le réglage
DEFAULT_CONTENT_TYPE
sera supprimé. HttpRequest.xreadlines()
sera supprimée.- La prise en charge du paramètre
context
deField.from_db_value()
et deExpression.convert_value()
sera supprimée. - Le paramètre nommé
field_name
deQuerySet.earliest()
et delatest()
sera supprimé.
Consultez les notes de publication de Django 2.1 pour plus de détails sur ces changements.
django.contrib.gis.db.models.functions.ForceRHR
sera supprimée.django.utils.http.cookie_date()
sera supprimée.- Les bibliothèques de balises de gabarits
staticfiles
etadmin_static
seront supprimées. django.contrib.staticfiles.templatetags.static()
sera supprimée.- La couche de compatibilité pour permettre à
InlineModelAdmin.has_add_permission()
d’être définie sans paramètreobj
sera supprimée.
2.1¶
Consultez les notes de publication de Django 1.11 pour plus de détails sur ces changements.
contrib.auth.views.login()
,logout()
,password_change()
,password_change_done()
,password_reset()
,password_reset_done()
,password_reset_confirm()
etpassword_reset_complete()
seront supprimées.- Le paramètre
extra_context
decontrib.auth.views.logout_then_login()
sera supprimé. django.test.runner.setup_databases()
sera supprimée.django.utils.translation.string_concat()
sera supprimée.django.core.cache.backends.memcached.PyLibMCCache
ne prendra plus en charge la transmission des réglages de comportementpylibmc
comme attributs de premier niveau desOPTIONS
.- Le paramètre
host
dedjango.utils.http.is_safe_url()
sera supprimé. - Le masquage des exceptions produites lors du rendu de la balise de gabarit
{% include %}
sera supprimé. DatabaseIntrospection.get_indexes()
sera supprimée.- La méthode
authenticate()
des moteurs d’authentification exigerarequest
comme premier paramètre positionnel. - Le décorateur
django.db.models.permalink()
sera supprimé. - Le réglage
USE_ETAGS
sera supprimé.CommonMiddleware
etdjango.utils.cache.patch_response_headers()
ne créeront plus d’ETags. - L’attribut
Model._meta.has_auto_field
sera supprimé. - La prise en charge de
url()
des drapeaux en ligne dans les groupes d’expressions régulières ((?i)
,(?L)
,(?m)
,(?s)
, and(?u)
) sera supprimée. - La prise en charge des méthodes
Widget.render()
sans le paramètrerenderer
sera supprimée.
2.0¶
Consultez les notes de publication de Django 1.9 pour plus de détails sur ces changements.
- Le paramètre
weak
dedjango.dispatch.signals.Signal.disconnect()
sera supprimé. django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()
sera supprimée.- Le paquet
django.forms.extras
sera supprimé. - L’utilitaire
assignment_tag
sera supprimé. - Le paramètre
host
deassertsRedirects
sera supprimé. La couche de compatibilité qui permet de considérer les URL absolues égales aux URL relatives lorsque le chemin est identique sera également supprimée. Field.rel
sera supprimé.- L’attribut
Field.remote_field.to
sera supprimé. - Le paramètre
on_delete
deForeignKey
etOneToOneField
deviendra obligatoire. django.db.models.fields.add_lazy_relation()
sera supprimée.- Lorsque la prise en charge des fuseaux horaires est active, les moteurs de base de données qui ne prennent pas en charge les fuseaux horaires ne vont plus convertir les dates/heures avec fuseau en valeurs UTC naïves lorsque de telles valeurs sont transmises en paramètre à des requêtes SQL exécutées en dehors de l’ORM, par exemple avec
cursor.execute()
. - Le décorateur
django.contrib.auth.tests.utils.skipIfCustomUser()
sera supprimé. - Les classes
GeoManager
etGeoQuerySet
seront supprimées. - Le module
django.contrib.gis.geoip
sera supprimé. - Le contrôle
supports_recursion
pour les chargeurs de gabarit sera supprimé 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()
- Les méthodes de chargeur de gabarit
load_template()
etload_template_sources()
seront supprimées. - Le paramètre
template_dirs
des chargeurs de gabarit sera supprimé de :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()
- La méthode
django.template.loaders.base.Loader.__call__()
sera supprimée. - La prise en charge des vues d’erreur personnalisées avec un seul paramètre positionnel sera supprimée.
- L’attribut
mime_type
dedjango.utils.feedgenerator.Atom1Feed
et dedjango.utils.feedgenerator.RssFeed
sera supprimé en faveur decontent_type
. - Le paramètre
app_name
dedjango.conf.urls.include()
sera supprimé. - La prise en charge de la transmission d’un tuple à 3 comme premier paramètre de
include()
sera supprimée. - La prise en charge de la définition de l’espace de nom d’une instance d’URL sans espace de nom d’application sera supprimée.
Field._get_val_from_obj()
sera supprimée en faveur deField.value_from_object()
.django.template.loaders.eggs.Loader
sera supprimée.- Le paramètre
current_app
decontrib.auth
sera supprimé. - Le paramètre nommé
callable_obj
deSimpleTestCase.assertRaisesMessage()
sera supprimé. - La prise en charge de l’attribut
allow_tags
des méthodesModelAdmin
sera supprimée. - Le paramètre nommé
enclosure
deSyndicationFeed.add_item()
sera supprimé. - Les alias
django.template.loader.LoaderOrigin
etdjango.template.base.StringOrigin
dedjango.template.base.Origin
seront supprimés.
Consultez les notes de publication de Django 1.10 pour plus de détails sur ces changements.
- L’option
makemigrations --exit
sera supprimée. - La prise en charge de l’attribution directe à une clé étrangère inversée ou à des relations plusieurs-à-plusieurs sera supprimée.
- Les méthodes
get_srid()
etset_srid()
dedjango.contrib.gis.geos.GEOSGeometry
seront supprimées. - Les méthodes
get_x()
,set_x()
,get_y()
,set_y()
,get_z()
etset_z()
dedjango.contrib.gis.geos.Point
seront supprimées. - Les méthodes
get_coords()
etset_coords()
dedjango.contrib.gis.geos.Point
seront supprimées. - La propriété
cascaded_union
dedjango.contrib.gis.geos.MultiPolygon
sera supprimée. django.utils.functional.allow_lazy()
sera supprimée.- L’option
shell --plain
sera supprimée. - Le module
django.core.urlresolvers
sera supprimé. - Le modèle
CommaSeparatedIntegerField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec les migrations historiques. - La prise en charge de la méthode de gabarit
Context.has_key()
sera supprimée. - La prise en charge des méthodes
django.core.files.storage.Storage.accessed_time()
,created_time()
etmodified_time()
sera supprimée. - Les expressions de requête utilisant le nom de modèle lorsque
Meta.default_related_name
est défini ne seront plus prises en charge. - L’expression de requête
__search
et la méthodeDatabaseOperations.fulltext_search_sql()
seront supprimées. - Le bout de code prenant en charge les classes personnalisées de gestionnaire de champs liés sans méthode
_apply_rel_filters()
sera supprimé. - L’utilisation de
User.is_authenticated()
et deUser.is_anonymous()
sous forme de méthode ne sera plus prise en charge. - L’attribut privé
virtual_fields
deModel._meta
sera supprimé. - Les arguments nommés privés
virtual_only
dansField.contribute_to_class()
etvirtual
dansModel._meta.add_field()
seront supprimés. - Les vues
javascript_catalog()
etjson_catalog()
seront supprimées. - La fonction
django.contrib.gis.utils.precision_wkt()
sera supprimée. - Dans l’héritage multitable, la promotion implicite d’un champ
OneToOneField
vers un lienparent_link
sera supprimée. - La prise en charge de
Widget._format_value()
sera supprimée. - Les méthodes
get_directory_name()
etget_filename()
deFileField
seront supprimées. - La fonction
mark_for_escaping()
et les classes qu’elle utilise :EscapeData
,EscapeBytes
,EscapeText
,EscapeString
etEscapeUnicode
seront supprimées. - Le filtre
escape
sera modifié pour utiliserdjango.utils.html.conditional_escape()
. Manager.use_for_related_fields
sera supprimé.- L’héritage de
Manager
des modèles va suivre les règles d’héritage MRO et l’attributMeta.manager_inheritance_from_future
qui active ce comportement sera supprimé. - La prise en charge de l’ancien style d’intergiciel utilisant
settings.MIDDLEWARE_CLASSES
sera supprimée.
1.10¶
Consultez les notes de publication de Django 1.8 pour plus de détails sur ces changements.
- La prise en charge de l’appel direct à
SQLCompiler
comme alias pour appeler sa méthodequote_name_unless_alias
sera supprimée. - Les balises de gabarit
cycle
etfirstof
seront supprimées de la bibliothèque de balises de gabaritfuture
(utilisées durant la période d’obsolescence 1.6/1.7). django.conf.urls.patterns()
sera supprimée.- La prise en charge de l’argument
prefix
dedjango.conf.urls.i18n.i18n_patterns()
sera supprimée. SimpleTestCase.urls
sera supprimé.- L’utilisation d’un nombre incorrect de valeurs dépaquetées dans la balise de gabarit
for
produira une exception et n’échouera plus de manière silencieuse. - La possibilité de résoudre des URL avec un chemin Python pointé sera supprimée.
- La possibilité d’utiliser un chemin Python pointé pour les réglages
LOGIN_URL
etLOGIN_REDIRECT_URL
sera supprimée. - La prise en charge de
optparse
pour les commandes d’administration personnalisées sera supprimée (remplacée parargparse
). - La classe
django.core.management.NoArgsCommand
sera supprimée. UtilisezBaseCommand
à la place, qui n’accepte aucun argument par défaut. - Le module
django.core.context_processors
sera supprimé. - Le module
djangodb.models.sql.aggregates
sera supprimé. - Le module
django.contrib.gis.db.models.sql.aggregates
sera supprimé. - Les méthodes et propriétés suivantes de
django.db.sql.query.Query
seront supprimées :- Propriétés :
aggregates
etaggregate_select
- Méthodes :
add_aggregate
,set_aggregate_mask
etappend_aggregate_mask
.
- Propriétés :
django.template.resolve_variable
sera supprimée.- Les API privées suivantes seront supprimées 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()
- Le paramètre
error_message
dedjango.forms.RegexField
sera supprimé. - Le filtre
unordered_list
ne prendra plus en charge les listes de l’ancien style. - La prise en charge des paramètres de
view
sous forme de texte dansurl()
sera supprimée. - La couche de rétrocompatibilité pour renommer
django.forms.Form._has_changed()
enhas_changed()
sera supprimée. - Le filtre de gabarit
removetags
sera supprimé. - Les fonctions
remove_tags()
etstrip_entities()
dedjango.utils.html
seront supprimées. - Le paramètre
is_admin_site
dedjango.contrib.auth.views.password_reset()
sera supprimé. django.db.models.field.subclassing.SubfieldBase
sera supprimée.django.utils.checksums
sera supprimée ; cette fonctionnalité est incluse dansdjango-localflavor
1.1+.- L’attribut
original_content_type_id
dedjango.contrib.admin.helpers.InlineAdminForm
sera supprimé. - La couche de compatibilité pour permettre à
FormMixin.get_form()
d’être définie sans valeur par défaut pour son paramètreform_class
sera supprimée. - Les réglages suivants seront supprimés :
ALLOWED_INCLUDE_ROOTS
TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_DEBUG
TEMPLATE_DIRS
TEMPLATE_LOADERS
TEMPLATE_STRING_IF_INVALID
- L’alias de rétrocompatibilité
django.template.loader.BaseLoader
sera supprimé. - Les objets de gabarit Django renvoyés par
get_template()
etselect_template()
n’accepteront plus deContext
dans leur méthoderender()
. - Les API de réponse de gabarit forceront l’usage de
dict
et d’objets de gabarit dépendants du moteur au lieu de respectivementContext
et deTemplate
. - Le paramètre
current_app
sera supprimé des fonction et classes suivantes :django.shortcuts.render()
django.template.Context()
django.template.RequestContext()
django.template.response.TemplateResponse()
- Les paramètres
dictionary
etcontext_instance
seront supprimés des fonctions suivantes :django.shortcuts.render()
django.shortcuts.render_to_response()
django.template.loader.render_to_string()
- Le paramètre
dirs
sera supprimé des fonctions suivantes :django.template.loader.get_template()
django.template.loader.select_template()
django.shortcuts.render()
django.shortcuts.render_to_response()
- La vérification des sessions sera active sans tenir compte de la présence de
'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
dansMIDDLEWARE_CLASSES
. - L’attribut privé
django.db.models.Field.related
sera supprimé. - L’option
--list
de la commande d’administrationmigrate
sera supprimée. - La balise de gabarit
ssi
sera supprimée. - La prise en charge de l’opérateur de comparaison
=
sera supprimée dans la balise de gabaritif
. - Les bouts de code de rétrocompatibilité pour permettre de définir
Storage.get_available_name()
etStorage.save()
sans argumentmax_length
seront supprimés. - La prise en charge de l’ancienne syntaxe
%(<foo>)s
dansModelFormMixin.success_url
sera supprimée. - Les méthodes d’agrégation
GeoQuerySet
collect()
,extent()
,extent3d()
,make_line()
etunionagg()
seront supprimées. - La possibilité de définir
ContentType.name
lors de la création d’une instance de type de contenu sera supprimée. - La prise en charge de l’ancienne signature de
allow_migrate
sera supprimée. Elle a changé deallow_migrate(self, db, model)
àallow_migrate(self, db, app_label, model_name=None, **hints)
. - La prise en charge de la syntaxe de
{% cycle %}
utilisant les arguments séparés par des virgules sera supprimée. - L’avertissement que donne
Signer
lorsqu’elle reçoit un séparateur non valable deviendra une exception.
1.9¶
Consultez les notes de publication de Django 1.7 pour plus de détails sur ces changements.
django.utils.dictconfig
sera supprimé.django.utils.importlib
sera supprimé.django.utils.tzinfo
sera supprimé.django.utils.unittest
sera supprimé.- La commande
syncdb
sera supprimée. django.db.models.signals.pre_syncdb
etdjango.db.models.signals.post_syncdb
seront supprimés.allow_syncdb
sur les routeurs de base de données ne deviendra plus automatiquementallow_migrate
.- La synchronisation automatique des applications sans migrations sera supprimée. Les migrations deviendront obligatoires pour toutes les applications sauf quand l’option
--run-syncdb
est transmise à la commandemigrate
. - Les commandes d’administration SQL pour les applications sans migrations
sql
,sqlall
,sqlclear
,sqldropindexes
etsqlindexes
seront supprimées. - La prise en charge du chargement automatique des instantanés
initial_data
et des données SQL initiales sera supprimée. - Tous les modèles devront être définis dans une application installée ou déclarer une option
app_label
explicite. De plus, il ne sera plus possible de les importer avant que leur application soit chargée. En particulier, il ne sera plus possible d’importer des modèles dans le paquet racine de leur application. - Les champ de modèle et de formulaire
IPAddressField
seront supprimés. Un champ de substitution restera pour des raisons de compatibilité avec l’historique des migrations. AppCommand.handle_app()
ne sera plus prise en charge.RequestSite
etget_current_site()
ne pourront plus être importés à partir dedjango.contrib.sites.models
.- La prise en charge de FastCGI par la commande d’administration
runfcgi
sera supprimée. Veuillez déployer votre projet avec WSGI. django.utils.datastructures.SortedDict
sera supprimé. Utilisez à la placecollections.OrderedDict
de la bibliothèque Python standard.ModelAdmin.declared_fieldsets
sera supprimé.- Les instances de fichier
util.py
dans la base de code de Django ont été renommées enutils.py
dans un effort d’unification de toutes les références àutil
etutils
. Les modules qui garantissent une rétrocompatibilité seront supprimés.django.contrib.admin.util
django.contrib.gis.db.backends.util
django.db.backends.util
django.forms.util
ModelAdmin.get_formsets
sera supprimé.- Le code de rétrocompatibilité permettant le renommage de la méthode
BaseMemcachedCache._get_memcache_timeout()
enget_backend_timeout()
sera supprimé. - Les options
--natural
et-n
dedumpdata
seront supprimées. - Le paramètre
use_natural_keys
deserializers.serialize()
sera supprimé. - L’API privée
django.forms.forms.get_declared_fields()
sera supprimée. - La possibilité d’utiliser un composant
SplitDateTimeWidget
avecDateTimeField
sera supprimée. - La propriété
WSGIRequest.REQUEST
sera supprimée. - La classe
django.utils.datastructures.MergeDict
sera supprimée. - Les codes de langues
zh-cn
etzh-tw
seront supprimés et remplacés respectivement par les codes de langueszh-hans
etzh-hant
. - La fonction interne
django.utils.functional.memoize
sera supprimée. django.core.cache.get_cache
sera supprimée. Ajoutez plutôt les lignes adéquates dansCACHES
et utilisezdjango.core.cache.caches
.django.db.models.loading
sera supprimée.- La transmission de paramètres exécutables aux jeux de requête ne sera plus possible.
BaseCommand.requires_model_validation
sera supprimé en faveur derequires_system_checks
.- Les attributs
ModelAdmin.validator_class
etdefault_validator_class
seront supprimés. ModelAdmin.validate()
sera supprimée.django.db.backends.DatabaseValidation.validate_field
sera supprimée en faveur de la méthodecheck_field
.- La commande d’administration
validate
sera supprimée. django.utils.module_loading.import_by_path
sera supprimé en faveur dedjango.utils.module_loading.import_string
.- Les balises de gabarit
ssi
eturl
seront supprimées de la bibliothèque de balises de gabaritfuture
(utilisées durant la période d’obsolescence 1.3/1.4). django.utils.text.javascript_quote
sera supprimé.- Les réglages de test de base de données comme entrées indépendantes dans les réglages de base de données, préfixés par
TEST_
ne seront plus pris en charge. - L’option
cache_choices
deModelChoiceField
etModelMultipleChoiceField
sera supprimée. - La valeur par défaut de l’attribut
RedirectView.permanent
sera modifié deTrue
àFalse
. django.contrib.sitemaps.FlatPageSitemap
sera supprimée en faveur dedjango.contrib.flatpages.sitemaps.FlatPageSitemap
.- L’API privée
django.test.utils.TestTemplateLoader
sera supprimée. - Le module
django.contrib.contenttypes.generic
sera supprimé. - Les API privées
django.db.models.sql.where.WhereNode.make_atom()
etdjango.db.models.sql.where.Constraint
seront supprimées.
1.8¶
Consultez les notes de publication de Django 1.6 pour plus de détails sur ces changements.
django.contrib.comments
sera supprimé.- Les API de gestion des transactions suivantes seront supprimées :
TransactionMiddleware
,- les décorateurs et gestionnaires de contexte
autocommit
,commit_on_success
etcommit_manually
, définis dansdjango.db.transaction
, - les fonctions
commit_unless_managed
etrollback_unless_managed
, aussi définies dansdjango.db.transaction
, - le réglage
TRANSACTIONS_MANAGED
.
- Les balises de gabarit
cycle
etfirstof
vont automatiquement échapper leurs paramètres. Dans 1.6 et 1.7, ce comportement est offert par les versions de ces balises dans la bibliothèque de balises de gabaritfuture
. - Le réglage
SEND_BROKEN_LINK_EMAILS
sera supprimé. Ajoutez plutôt l’intergicieldjango.middleware.common.BrokenLinkEmailsMiddleware
à votre réglageMIDDLEWARE_CLASSES
. django.middleware.doc.XViewMiddleware
sera supprimé. Utilisezdjango.contrib.admindocs.middleware.XViewMiddleware
à la place.Model._meta.module_name
a été renommé enmodel_name
.- Suppression du code de rétrocompatibilité introduit pour renommer
get_query_set
et les méthodes similaires de jeux de requêtes. Cela affecte les classes suivantes :BaseModelAdmin
,ChangeList
,BaseCommentNode
,GenericForeignKey
,Manager
,SingleRelatedObjectDescriptor
etReverseSingleRelatedObjectDescriptor
. - Suppression du code de rétrocompatibilité introduit pour renommer les attributs
ChangeList.root_query_set
etChangeList.query_set
. django.views.defaults.shortcut
sera supprimée, dans le cadre de l’objectif de supprimer toutes les références àdjango.contrib
dans le code du cœur de Django. Utilisezdjango.contrib.contenttypes.views.shortcut
à la place.django.conf.urls.shortcut
sera aussi supprimée.- Le module Python Imaging Library (PIL) ne sera plus pris en charge, car il ne semble plus activement maintenu et qu’il ne fonctionne pas avec Python 3.
- Les API privées suivantes seront supprimées :
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
sera supprimé en faveur dedjango.forms.widgets.RadioChoiceInput
.- Le module
django.test.simple
et la classedjango.test.simple.DjangoTestSuiteRunner
seront supprimés. Utilisezdjango.test.runner.DiscoverRunner
à la place. - Le module
django.test._doctest
sera supprimé. Utilisez à la place le module doctest de la bibliothèque Python standard. - Le réglage
CACHE_MIDDLEWARE_ANONYMOUS_ONLY
sera supprimé. - Usage of the hard-coded Hold down « Control », or « Command » on a Mac, to select
more than one. string to override or append to user-provided
help_text
in forms for ManyToMany model fields will not be performed by Django anymore either at the model or forms layer. - Les méthodes
Model._meta.get_(add|change|delete)_permission
seront supprimées. - La clé de session
django_language
ne sera plus lue comme elle l’était par rétrocompatibilité. - Les plans de site géographiques seront supprimés (
django.contrib.gis.sitemaps.views.index
etdjango.contrib.gis.sitemaps.views.sitemap
). django.utils.html.fix_ampersands
, le filtre de gabaritfix_ampersands
etdjango.utils.html.clean_html
seront supprimés selon une obsolescence accélérée.
1.7¶
Consultez les notes de publication de Django 1.5 pour plus de détails sur ces changements.
- Le module
django.utils.simplejson
sera supprimé. La bibliothèque standard fournitjson
qui doit être utilisé à la place. - La fonction
django.utils.itercompat.product
sera supprimée. La version intégrée à Python doit être utilisée à la place. - La correction automatique des réglages INSTALLED_APPS et TEMPLATE_DIRS lorsqu’ils contiennent des chaînes au lieu de tuples sera supprimée et produira une exception.
- L’argument
mimetype
des méthodes__init__
de class:~django.http.HttpResponse,SimpleTemplateResponse
etTemplateResponse
sera supprimé. Il faut utilisercontent_type
à la place. Cela s’applique aussi au raccourcirender_to_response()
et aux vues des plans de sites,index()
etsitemap()
. - Lorsque
HttpResponse
est instanciée avec un itérateur ou lorsquecontent
est défini à un itérateur, ce dernier sera immédiatement consommé. - Le réglage
AUTH_PROFILE_MODULE
ainsi que la méthodeget_profile()
du modèleUser
seront supprimés. - La commande d’administration
cleanup
sera supprimée. Elle est remplacée parclearsessions
. - Le script
daily_cleanup.py
sera supprimé. - Le paramètre nommé
depth
sera supprimé deselect_related()
. - Les fonctions non documentées
get_warnings_state()
/restore_warnings_state()
dedjango.test.utils
et les méthodes django.test.*TestCasesave_warnings_state()
/restore_warnings_state()
sont obsolètes. Utilisez plutôt le gestionnaire de contextewarnings.catch_warnings
disponible à partir de Python 2.6. - The undocumented
check_for_test_cookie
method inAuthenticationForm
will be removed following an accelerated deprecation. Users subclassing this form should remove calls to this method, and instead ensure that their auth related views are CSRF protected, which ensures that cookies are enabled. - 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 thanPASSWORD_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. - La classe mixin
django.utils.encoding.StrAndUnicode
sera supprimée.
1.6¶
Consultez les notes de publication de Django 1.4 pour plus de détails sur ces changements.
django.contrib.databrowse
sera supprimée.django.contrib.localflavor
sera supprimée suite à une obsolescence accélérée.django.contrib.markup
sera supprimée suite à une obsolescence accélérée.- Les modules de compatibilité
django.utils.copycompat
etdjango.utils.hashcompat
de même que les fonctionsdjango.utils.itercompat.all
etdjango.utils.itercompat.any
seront supprimées. Les versions intégrées à Python doivent être utilisées à la place. - The
csrf_response_exempt
andcsrf_view_exempt
decorators will be removed. Since 1.4csrf_response_exempt
has been a no-op (it returns the same function), andcsrf_view_exempt
has been a synonym fordjango.views.decorators.csrf.csrf_exempt
, which should be used to replace it. - The
django.core.cache.backends.memcached.CacheClass
backend was split into two in Django 1.3 in order to introduce support for PyLibMC. The historicalCacheClass
will be removed in favor ofdjango.core.cache.backends.memcached.MemcachedCache
. - The UK-prefixed objects of
django.contrib.localflavor.uk
will only be accessible through their GB-prefixed names (GB is the correct ISO 3166 code for United Kingdom). - The
IGNORABLE_404_STARTS
andIGNORABLE_404_ENDS
settings have been superseded byIGNORABLE_404_URLS
in the 1.4 release. They will be removed. - The form wizard has been refactored to use class-based views with pluggable backends in 1.4. The previous implementation will be removed.
- Les anciennes manières d’appeler
cache_page()
seront supprimées. - The backward-compatibility shim to automatically add a debug-false
filter to the
'mail_admins'
logging handler will be removed. TheLOGGING
setting should include this filter explicitly if it is desired. - Les fonctions de troncature intégrées
django.utils.text.truncate_words()
etdjango.utils.text.truncate_html_words()
seront supprimées en faveur de la nouvelle classedjango.utils.text.Truncator
. - La classe
django.contrib.gis.geoip.GeoIP
a été déplacée dansdjango.contrib.gis.geoip
dans la version 1.4 – le raccourci dansdjango.contrib.gis.utils
sera supprimé. django.conf.urls.defaults
sera supprimée. Les fonctionsinclude()
,patterns()
eturl()
, ainsi quehandler404
ethandler500
sont dorénavant disponibles pardjango.conf.urls
.- Les fonctions
setup_environ()
etexecute_manager()
seront supprimées dedjango.core.management
. Cela signifie aussi que l’ancien (pré-1.4) style de fichiermanage.py
ne fonctionnera plus. - La définition des drapeaux
is_safe
etneeds_autoescape
en tant qu’attributs des fonctions de filtres de gabarits ne sera plus prise en charge. - L’attribut
HttpRequest.raw_post_data
a été renommé enHttpRequest.body
dans 1.4. La rétrocompatibilité sera supprimée –HttpRequest.raw_post_data
ne sera plus disponible. - La valeur du paramètre
post_url_continue
dansModelAdmin.response_add()
devra soit valoirNone
(pour rediriger vers la page d’édition de l’objet nouvellement créé) soit contenir une URL préformatée. Les substitutions de chaînes, telles que la valeur par défaut précédente'../%s/'
, ne seront plus acceptées.
1.5¶
Consultez les notes de publication de Django 1.3 pour plus de détails sur ces changements.
- Starting Django without a
SECRET_KEY
will result in an exception rather than aDeprecationWarning
. (This is accelerated from the usual deprecation path; see the Django 1.4 release notes.) - The
mod_python
request handler will be removed. Themod_wsgi
handler should be used instead. - The
template
attribute ondjango.test.client.Response
objects returned by the test client will be removed. Thetemplates
attribute should be used instead. - The
django.test.simple.DjangoTestRunner
will be removed. Instead use aunittest
-native class. The features of thedjango.test.simple.DjangoTestRunner
(including fail-fast and Ctrl-C test termination) can be provided byunittest.TextTestRunner
. - The undocumented function
django.contrib.formtools.utils.security_hash
will be removed, instead usedjango.contrib.formtools.utils.form_hmac
- The function-based generic view modules will be removed in favor of their class-based equivalents, outlined here.
- The
django.core.servers.basehttp.AdminMediaHandler
will be removed. In its place usedjango.contrib.staticfiles.handlers.StaticFilesHandler
. - The template tags library
adminmedia
and the template tag{% admin_media_prefix %}
will be removed in favor of the generic static files handling. (This is faster than the usual deprecation path; see the Django 1.4 release notes.) - The
url
andssi
template tags will be modified so that the first argument to each tag is a template variable, not an implied string. In 1.4, this behavior is provided by a version of the tag in thefuture
template tag library. - Les commandes d’administration
reset
etsqlreset
seront supprimées. - Authentication backends will need to support an inactive user
being passed to all methods dealing with permissions.
The
supports_inactive_user
attribute will no longer be checked and can be removed from custom backends. transform()
will raise aGEOSException
when called on a geometry with no SRID value.django.http.CompatCookie
sera supprimée en faveur dedjango.http.SimpleCookie
.django.core.context_processors.PermWrapper
anddjango.core.context_processors.PermLookupDict
will be removed in favor of the correspondingdjango.contrib.auth.context_processors.PermWrapper
anddjango.contrib.auth.context_processors.PermLookupDict
, respectively.- The
MEDIA_URL
orSTATIC_URL
settings will be required to end with a trailing slash to ensure there is a consistent way to combine paths in templates. django.db.models.fields.URLField.verify_exists
will be removed. The feature was deprecated in 1.3.1 due to intractable security and performance issues and will follow a slightly accelerated deprecation timeframe.- Translations located under the so-called project path will be ignored during
the translation building process performed at runtime. The
LOCALE_PATHS
setting can be used for the same task by including the filesystem path to alocale
directory containing non-app-specific translations in its value. - The Markup contrib app will no longer support versions of Python-Markdown library earlier than 2.1. An accelerated timeline was used as this was a security related deprecation.
- The
CACHE_BACKEND
setting will be removed. The cache backend(s) should be specified in theCACHES
setting.
1.4¶
Consultez les notes de publication de Django 1.2 pour plus de détails sur ces changements.
CsrfResponseMiddleware
andCsrfMiddleware
will be removed. Use the{% csrf_token %}
template tag inside forms to enable CSRF protection.CsrfViewMiddleware
remains and is enabled by default.- Les anciennes importations de fonctionnalité CSRF (
django.contrib.csrf.*
), qui sont passées dans le cœur Django dans la version 1.2 seront supprimées. - Le module
django.contrib.gis.db.backend
sera supprimé en faveur des moteurs spécifiques. SMTPConnection
will be removed in favor of a generic email backend API.- Les fonctions de génération SQL plusieurs-à-plusieurs des moteurs de base de données seront supprimées.
- La possibilité d’utiliser la famille de réglages de premier niveau
DATABASE_*
pour définir les connexions de base de données sera supprimée. - The ability to use shorthand notation to specify a database backend
(i.e.,
sqlite3
instead ofdjango.db.backends.sqlite3
) will be removed. - The
get_db_prep_save
,get_db_prep_value
andget_db_prep_lookup
methods will have to support multiple databases. - The
Message
model (indjango.contrib.auth
), its related manager in theUser
model (user.message_set
), and the associated methods (user.message_set.create()
anduser.get_and_delete_messages()
), will be removed. The messages framework should be used instead. The relatedmessages
variable returned by the auth context processor will also be removed. Note that this means that the admin application will depend on the messages context processor. - Authentication backends will need to support the
obj
parameter for permission checking. Thesupports_object_permissions
attribute will no longer be checked and can be removed from custom backends. - Les moteurs d’authentification devront prendre en charge la classe
AnonymousUser
transmise à toutes les méthodes s’occupant de permissions. La variablesupports_anonymous_user
ne sera plus prise en compte et peut être supprimée de tout moteur personnalisé. - The ability to specify a callable template loader rather than a
Loader
class will be removed, as will theload_template_source
functions that are included with the built in template loaders for backwards compatibility. django.utils.translation.get_date_formats()
anddjango.utils.translation.get_partial_date_formats()
. These functions will be removed; use the locale-awaredjango.utils.formats.get_format()
to get the appropriate formats.- Dans
django.forms.fields
, les constantesDEFAULT_DATE_INPUT_FORMATS
,DEFAULT_TIME_INPUT_FORMATS
etDEFAULT_DATETIME_INPUT_FORMATS
seront supprimées. Utilisezdjango.utils.formats.get_format()
pour obtenir les formats appropriés. - La possibilité d’utiliser un lanceur de tests basé sur une fonction sera supprimée, de même que le lanceur de tests
django.test.simple.run_tests()
. - La vue
views.feed()
et la classefeeds.Feed
dansdjango.contrib.syndication
seront supprimées. La vue basée sur une classeviews.Feed
doit être utilisée à la place. django.core.context_processors.auth
. Cette publication va supprimer l’ancienne méthode en faveur de la nouvelle méthode dansdjango.contrib.auth.context_processors.auth
.- Le moteur de base de données
postgresql
sera supprimé, utilisez à la place le moteurpostgresql_psycopg2
. - Le code de langue
no
sera supprimé car il a été remplacé par le code de languenb
. - Les moteurs d’authentification devront définir l’attribut booléen
supports_inactive_user
jusqu’à la version 1.5 qui considérera comme acquis le fait que tous les moteurs savent gérer les utilisateurs inactifs. django.db.models.fields.XMLField
will be removed. This was deprecated as part of the 1.3 release. An accelerated deprecation schedule has been used because the field hasn’t performed any role beyond that of a simpleTextField
since the removal ofoldforms
. All uses ofXMLField
can be replaced withTextField
.- Le paramètre non documenté
mixin
de la méthodeopen()
dedjango.core.files.storage.Storage
(et ses sous-classes) sera supprimé.
1.3¶
Consultez les notes de publication de Django 1.1 pour plus de détails sur ces changements.
AdminSite.root()
. Cette méthode de branchement des URL d’administration sera supprimée en faveur de l’inclusion deadmin.site.urls
.- Les moteurs d’authentification doivent définir les attributs booléens
supports_object_permissions
etsupports_anonymous_user
jusqu’à la version 1.4, après quoi Django supposera que tous les moteurs savent gérer ces options.