Django 2.0 versionsinformation¶
2 december 2017
Välkommen till Django 2.0!
Dessa versionsinformation täcker de nya funktionerna, samt några bakåtkompatibla ändringar som du vill vara medveten om när du uppgraderar från Django 1.11 eller tidigare. Vi har ta bort några funktioner som har nått slutet av sin utfasningscykel, och vi har startat utfasningsprocessen för några funktioner.
Denna utgåva börjar Djangos användning av en lös form av semantisk versionshantering, men det finns inga större bakåtkompatibla ändringar som kan förväntas av en 2.0-utgåva. Uppgradering bör vara en liknande mängd ansträngning som tidigare funktionsutgåvor.
Se guiden Så här uppgraderar du Django till en nyare version om du ska uppdatera ett befintligt projekt.
Kompatibilitet med Python¶
Django 2.0 stöder Python 3.4, 3.5, 3.6 och 3.7. Vi rekommenderar starkt och stöder endast officiellt den senaste versionen av varje serie.
Django 1.11.x-serien är den sista som stöder Python 2.7.
Django 2.0 kommer att vara den sista utgåveserien som stöder Python 3.4. Om du planerar en distribution av Python 3.4 bortom slutet av livscykeln för Django 2.0 (april 2019), håll dig till Django 1.11 LTS (stöds fram till april 2020) istället. Observera dock att slutdatumet för Python 3.4 är mars 2019.
Stöd för tredjepartsbibliotek för äldre versioner av Django¶
Efter lanseringen av Django 2.0 föreslår vi att tredjepartsappförfattare släpper stödet för alla versioner av Django före 1.11. Vid den tidpunkten bör du kunna köra ditt pakets tester med hjälp av python -Wd så att varningar om utdatering visas. Efter att du har åtgärdat varningarna för utfasning bör din app vara kompatibel med Django 2.0.
Vad är nytt i Django 2.0¶
Förenklad syntax för URL-routning¶
The new django.urls.path() function allows a simpler, more readable URL
routing syntax. For example, this example from previous Django releases:
url(r"^articles/(?P<year>[0-9]{4})/$", views.year_archive),
skulle kunna skrivas som:
path("articles/<int:year>/", views.year_archive),
Den nya syntaxen stöder typkoercition av URL-parametrar. I exemplet kommer vyn att ta emot nyckelordsargumentet year som ett heltal snarare än som en sträng. Dessutom är de webbadresser som kommer att matcha något mindre begränsade i det omskrivna exemplet. Till exempel kommer år 10000 nu att matcha eftersom årtalen inte är begränsade till att vara exakt fyra siffror långa som de är i det reguljära uttrycket.
Funktionen django.conf.urls.url() från tidigare versioner är nu tillgänglig som django.urls.re_path(). Den gamla platsen finns kvar för bakåtkompatibilitet, utan en överhängande föråldring. Den gamla funktionen django.conf.urls.include() är nu importerbar från django.urls så att du kan använda from django.urls import include, path, re_path i dina URLconfs.
Dokumentet URL-distributör är omskrivet för att innehålla den nya syntaxen och ge mer information.
Mobilvänlig contrib.admin¶
Administrationen är nu responsiv och stöder alla större mobila enheter. Äldre webbläsare kan uppleva varierande nivåer av graceful degradation.
Uttryck i fönster¶
Det nya Window-uttrycket gör det möjligt att lägga till en OVER-klausul till querysets. Du kan använda window functions och aggregate functions i uttrycket.
Mindre funktioner¶
django.contrib.admin¶
Det nya attributet
ModelAdmin.autocomplete_fieldsoch metodenModelAdmin.get_autocomplete_fields()gör det möjligt att använda en sökwidget Select2 förForeignKeyochManyToManyField.
django.contrib.auth¶
Standardantalet iterationer för PBKDF2-lösenordshashen ökas från 36 000 till 100 000.
django.contrib.gis¶
Lagt till MySQL-stöd för funktionen
AsGeoJSON,GeoHash,IsValid,isvalidlookup, och distance lookups.Lade till funktionerna
AzimuthochLineLocatePoint, som stöds av PostGIS och SpatiaLite.Alla
GEOSGeometrysom importeras från GeoJSON har nu sin SRID inställd.Lagt till attributet
OSMWidget.default_zoomför att anpassa kartans standardzoomnivå.Gjorde metadata läsbara och redigerbara på raster genom attributen
metadata,infoochmetadata.Tillåtet att skicka drivrutinsspecifika skapelsealternativ till
GDALRaster-objekt med hjälp avpapsz_options.Tillåtet att skapa
GDALRaster-objekt i GDAL:s interna virtuella filsystem. Raster kan nu skapas från och konverteras till binärdata i minnet.Den nya metoden
GDALBand.color_interp()returnerar färgtolkningen för bandet.
django.contrib.postgres¶
Det nya argumentet
distinctförArrayAggavgör om sammanlänkade värden ska vara distinkta.Den nya
RandomUUIDdatabasfunktionen returnerar en version 4 UUID. Det kräver användning av PostgreSQL: s ``pgcrypto `` förlängning som kan aktiveras med den nyaCryptoExtensionmigreringsoperationen.django.contrib.postgres.indexes.GinIndexstöder nu parametrarnafastupdateochgin_pending_list_limit.Den nya
GistIndex-klassen gör det möjligt att skapaGiST-index i databasen. Den nyaBtreeGistExtension-migreringsoperationen installerarbtree_gist-tillägget för att lägga till stöd för operatörsklasser som inte är inbyggda.inspectdbkan nu introspekteraJSONFieldoch olikaRangeField(django.contrib.postgresmåste finnas iINSTALLED_APPS).
django.contrib.sitemaps¶
Lade till nyckelordsargumentet
protocoltillGenericSitemap-konstruktören.
Cache¶
cache.set_many()returnerar nu en lista över nycklar som inte kunde infogas. För de inbyggda backends kan misslyckade inmatningar endast ske på memcached.
Fil delning¶
File.open()kan användas som en kontexthanterare, t.ex.med file.open() som f:.
Formulär¶
De nya argumenten
date_attrsochtime_attrsförSplitDateTimeWidgetochSplitHiddenDateTimeWidgetgör det möjligt att ange olika HTML-attribut för underwidgetarnaDateInputochTimeInput(eller dolda).Den nya
Form.errors.get_json_data()-metoden returnerar formulärfel som en ordbok som är lämplig att inkludera i ett JSON-svar.
Generiska åsikter¶
Det nya attributet
ContextMixin.extra_contextgör det möjligt att lägga till kontext iView.as_view().
Kommandon för hantering¶
inspectdböversätter nu MySQL:s osignerade heltalskolumner tillPositiveIntegerFieldellerPositiveSmallIntegerField.Det nya alternativet
makemessages --add-locationstyr kommentarsformatet i.po-filer.loaddatakan nu läsa från stdin.Det nya alternativet
diffsettings --outputgör det möjligt att formatera utdata i ett enhetligt diff-format.På Oracle kan
inspectdbnu introspekteraAutoFieldom kolumnen är skapad som en identitetskolumn.I MySQL har
dbshellnu stöd för TLS-certifikat på klientsidan.
Migreringar¶
Det nya alternativet
squashmigrations --squashed-namegör det möjligt att namnge den krossade migreringen.
Modeller¶
Den nya
StrIndexdatabasfunktionen hittar startindexet för en sträng inuti en annan sträng.I Oracle skapas nu
AutoFieldochBigAutoFieldsom identitetskolumner.Den nya parametern
chunk_sizeiQuerySet.iterator()styr antalet rader som hämtas av Python-databasklienten när resultat strömmas från databasen. För databaser som inte stöder markörer på serversidan kontrollerar den antalet resultat som Django hämtar från databasadaptern.QuerySet.earliest(),QuerySet.latest(), ochMeta.get_latest_bytillåter nu beställning av flera fält.Lade till funktionen
ExtractQuarterför att extrahera kvartalet frånDateFieldochDateTimeField, och exponerade den genomquarterlookup.Lagt till funktionen
TruncQuarterför att trunkeraDateFieldochDateTimeFieldtill den första dagen i ett kvartal.Lagt till parametern
db_tablespaceför klassbaserade index.Om databasen stöder ett inbyggt varaktighetsfält (Oracle och PostgreSQL), fungerar
Extractnu medDurationField.Added the
ofargument toQuerySet.select_for_update(), supported on PostgreSQL and Oracle, to lock only rows from specific tables rather than all selected tables. It may be helpful particularly whenselect_for_update()is used in conjunction withselect_related().Den nya parametern
field_nameiQuerySet.in_bulk()gör det möjligt att hämta resultat baserat på alla unika modellfält.CursorWrapper.callproc()now takes an optional dictionary of keyword parameters, if the backend supports this feature. Of Django’s built-in backends, only Oracle supports it.Den nya metoden
connection.execute_wrapper()gör det möjligt att installera omslag runt exekvering av databasfrågor.Det nya
filter-argumentet för inbyggda aggregat gör det möjligt att lägga till olika villkor till flera aggregat över samma fält eller relationer.Lagt till stöd för uttryck i
Meta.ordering.Den nya parametern
namediQuerySet.values_list()gör det möjligt att hämta resultat som namngivna tuples.Den nya klassen
FilteredRelationgör det möjligt att lägga till enON-klausul i frågeuppsättningar.
Sidindelning¶
Lagt till
Paginator.get_page()för att tillhandahålla det dokumenterade mönstret för hantering av ogiltiga sidnummer.
Förfrågningar och svar¶
Webbservern
runserverhar stöd för HTTP 1.1.
Mallar¶
För att öka användbarheten av
Engine.get_default()i tredjepartsappar returnerar den nu den första motorn om fleraDjangoTemplates-motorer är konfigurerade iTEMPLATESistället för att höjaImproperlyConfigured.Anpassade malltaggar kan nu acceptera argument som endast innehåller nyckelord.
Tester¶
Lagt till stöd för trådning i
LiveServerTestCase.Lagt till inställningar som gör det möjligt att anpassa parametrarna för testtabellutrymmen för Oracle:
DATAFILE_SIZE,DATAFILE_TMP_SIZE,DATAFILE_EXTSIZEochDATAFILE_TMP_EXTSIZE.
Validerare¶
Den nya
ProhibitNullCharactersValidatortillåter inte nolltecken i inmatningen i formulärfältetCharFieldoch dess underklasser. Inmatning av nolltecken observerades från verktyg för sårbarhetsskanning. De flesta databaser kasserar tyst nolltecken, men psycopg2 2.7+ ger upphov till ett undantag när man försöker spara ett nolltecken i ett char/text-fält med PostgreSQL.
Bakåtkompatibla ändringar i 2.0¶
Borttaget stöd för bytestrings på vissa ställen¶
För att stödja inbyggda Python 2-strängar var äldre Django-versioner tvungna att acceptera både bytestrings och Unicode-strängar. Nu när Python 2-stödet är borttaget bör bytestrings endast påträffas runt inmatnings-/utmatningsgränser (hantering av binära fält eller HTTP-strömmar, till exempel). Du kan behöva uppdatera din kod för att begränsa användningen av bytestringar till ett minimum, eftersom Django inte längre accepterar bytestringar i vissa kodvägar. Pythons -b-alternativ kan hjälpa till att upptäcka detta misstag i din kod.
Till exempel använder reverse() nu str() i stället för force_text() för att tvinga fram de args och kwargs som tas emot innan de placeras i URL:en. För bytestrings skapar detta en sträng med ett oönskat b-prefix samt ytterligare citattecken (str(b'foo') är "b'foo'"). För att anpassa dig, anropa decode() på bytestringen innan du skickar den till reverse().
Databas backend API¶
I det här avsnittet beskrivs ändringar som kan behövas i tredjeparts databasbackends.
Metoderna
DatabaseOperations.datetime_cast_date_sql(),datetime_cast_time_sql(),datetime_trunc_sql(),datetime_extract_sql()ochdate_interval_sql()returnerar nu endast SQL för att utföra åtgärden istället för SQL och en lista med parametrar.Tredjeparts databasbackends bör lägga till ett
DatabaseWrapper.display_name-attribut med namnet på databasen som din backend arbetar med. Django kan använda det i olika meddelanden, till exempel i systemkontroller.Det första argumentet i
SchemaEditor._alter_column_type_sql()är numodelistället förtable.Det första argumentet i
SchemaEditor._create_index_name()är nutable_nameistället förmodel.För att aktivera stöd för
FOR UPDATE OFangesDatabaseFeatures.has_select_for_update_of = True. Om databasen kräver att argumenten tillOFska vara kolumner i stället för tabeller, anger duDatabaseFeatures.select_for_update_of_column = True.För att aktivera stöd för
Windowuttryck, ställ inDatabaseFeatures.supports_over_clausetillTrue. Du kan behöva anpassa metodernaDatabaseOperations.window_start_rows_start_end()och/ellerwindow_start_range_start_end().Tredjeparts databasbackends bör lägga till ett
DatabaseOperations.cast_char_field_without_max_length-attribut med databasdatatypen som kommer att användas iCast-funktionen för enCharFieldom argumentetmax_lengthinte tillhandahålls.Det första argumentet i
DatabaseCreation._clone_test_db()ochget_test_db_clone_settings()är nuuffixsnarare ännummer(om du vill byta namn på signaturerna i din backend för konsekvens).django.testskickar nu också dessa värden som strängar snarare än som heltal.Tredjeparts databas backends bör lägga till en
DatabaseIntrospection.get_sequences()metod baserad på stubben iBaseDatabaseIntrospection.
Upphört stöd för Oracle 11.2¶
Slutet på uppströmsstöd för Oracle 11.2 är december 2020. Django 1.11 kommer att stödjas fram till april 2020 vilket nästan når detta datum. Django 2.0 stöder officiellt Oracle 12.1+.
MySQL:s standardisoleringsnivå är read committed¶
MySQL:s standardisoleringsnivå, repeatable read, kan orsaka dataförlust vid typisk Django-användning. För att förhindra detta och för att vara konsekvent med andra databaser är standardisoleringsnivån nu read committed. Du kan använda inställningen DATABASER för att använda en annan isoleringsnivå, om det behövs.
AbstractUser.last_name <django.contrib.auth.models.User.last_name>` max_length ökad till 150¶
En migrering för django.contrib.auth.models.User.last_name ingår. Om du har en anpassad användarmodell som ärver från AbstractUser måste du generera och tillämpa en databasmigrering för din användarmodell.
Om du vill behålla gränsen på 30 tecken för efternamn kan du använda ett anpassat formulär:
from django.contrib.auth.forms import UserChangeForm
class MyUserChangeForm(UserChangeForm):
last_name = forms.CharField(max_length=30, required=False)
Om du vill behålla denna begränsning i administratören när du redigerar användare, ställ in UserAdmin.form för att använda detta formulär:
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
QuerySet.reverse() och last() är förbjudna efter skärning¶
Att anropa QuerySet.reverse() eller last() på en skivad frågeuppsättning leder till oväntade resultat på grund av att skivningen tillämpas efter omordning. Detta är nu förbjudet, t.ex:
>>> Model.objects.all()[:2].reverse()
Traceback (most recent call last):
...
TypeError: Cannot reverse a query once a slice has been taken.
Formulärfält accepterar inte längre valfria argument som positionella argument¶
För att förhindra körtidsfel på grund av felaktig ordning på formulärfältsargument accepteras inte längre valfria argument i inbyggda formulärfält som positionsargument. Till exempel:
forms.IntegerField(25, 10)
ger upphov till ett undantag och bör ersättas med:
forms.IntegerField(max_value=25, min_value=10)
call_command() validerar de alternativ den tar emot¶
call_command() validerar nu att argumentparsern för kommandot som anropas definierar alla alternativ som skickas till call_command().
För anpassade hanteringskommandon som använder alternativ som inte skapats med parser.add_argument(), lägg till ett stealth_options-attribut på kommandot:
class MyCommand(BaseCommand):
stealth_options = ("option_name", ...)
Index accepterar inte längre positionella argument¶
Till exempel:
models.Index(["headline", "-pub_date"], "index_name")
ger upphov till ett undantag och bör ersättas med:
models.Index(fields=["headline", "-pub_date"], name="index_name")
Foreign key constraints är nu aktiverade i SQLite¶
Detta kommer att visas som en bakåtkompatibel ändring (IntegrityError: FOREIGN KEY constraint failed) om du försöker spara en befintlig modellinstans som bryter mot en främmande nyckelbegränsning.
Utländska nycklar skapas nu med DEFERRABLE INITIALLY DEFERRED istället för DEFERRABLE IMMEDIATE. Därför kan tabeller behöva byggas om för att återskapa främmande nycklar med den nya definitionen, särskilt om du använder ett mönster som detta:
from django.db import transaction
with transaction.atomic():
Book.objects.create(author_id=1)
Author.objects.create(id=1)
Om du inte återskapar den främmande nyckeln som DEFERRED kommer den första create() att misslyckas nu när begränsningar för främmande nycklar tillämpas.
Säkerhetskopiera din databas först! När du har uppgraderat till Django 2.0 kan du sedan bygga om tabeller med hjälp av ett skript som liknar detta:
from django.apps import apps
from django.db import connection
for app in apps.get_app_configs():
for model in app.get_models(include_auto_created=True):
if model._meta.managed and not (model._meta.proxy or model._meta.swapped):
for base in model.__bases__:
if hasattr(base, "_meta"):
base._meta.local_many_to_many = []
model._meta.local_many_to_many = []
with connection.schema_editor() as editor:
editor._remake_table(model)
Detta skript har inte genomgått omfattande tester och behöver anpassas för olika fall, t.ex. flera databaser. Du är välkommen att bidra med förbättringar.
På grund av en tabelländringsbegränsning i SQLite är det dessutom förbjudet att utföra RenameModel och RenameField på modeller eller fält som refereras av andra modeller i en transaktion. För att tillåta att migreringar som innehåller dessa operationer tillämpas måste du ställa in attributet Migration.atomic till False.
Diverse¶
Klassen
SessionAuthenticationMiddlewaretas bort. Den gav ingen funktionalitet eftersom sessionsautentisering är ovillkorligt aktiverad i Django 1.10.Standard HTTP-felhanterare (
handler404, etc.) är nu callables istället för prickade Python-sökvägssträngar. Django föredrar anropsbara referenser eftersom de ger bättre prestanda och felsökningsupplevelse.RedirectViewtystnar inte längreNoReverseMatchompattern_nameinte existerar.När
USE_L10När av respekterar nuFloatFieldochDecimalFieldDECIMAL_SEPARATORochTHOUSAND_SEPARATORunder validering. Till exempel, med inställningarna:USE_L10N = False USE_THOUSAND_SEPARATOR = True DECIMAL_SEPARATOR = "," THOUSAND_SEPARATOR = "."
en inmatning av
"1,345"konverteras nu till1345istället för1,345.Underklasser av
AbstractBaseUserbehöver inte längre implementeraget_short_name()ochget_full_name(). (Basimplementeringarna som ger upphov tillNotImplementedErrortas bort.)django.contrib.adminanvänder dessa metoder om de är implementerade men kräver dem inte. Tredjepartsappar som använder dessa metoder kanske vill anta ett liknande tillvägagångssätt.Formatinställningarna
FIRST_DAY_OF_WEEKochNUMBER_GROUPINGsparas nu som heltal i JavaScript- och JSON i18n-vyutdata.assertNumQueries()ignorerar nu frågor om anslutningskonfiguration. Tidigare, om ett test öppnade en ny databasanslutning, kunde dessa frågor inkluderas som en del avassertNumQueries()-räkningen.Standardstorleken för Oracle test tablespace ökas från 20M till 50M och standardstorleken för autoextend ökas från 10M till 25M.
För att förbättra prestandan vid streaming av stora resultatuppsättningar från databasen hämtar
QuerySet.iterator()nu 2000 rader åt gången istället för 100. Det gamla beteendet kan återställas med hjälp av parameternchunk_size. Till exempel:Book.objects.iterator(chunk_size=100)
Om okända paketnamn anges i argumentet
packagesi vynJavaScriptCatalogutlöses nuValueErroristället för att passera tyst.En modellinstans primärnyckel visas nu i standardmetoden
Model.__str__(), t.ex.Frågeobjekt (1).makemigrationsupptäcker nu ändringar i modellfältetslimit_choices_to-alternativ. Lägg till detta i dina befintliga migreringar eller acceptera en automatiskt genererad migrering för fält som använder det.Utförande av frågor som kräver automatiska rumsliga transformationer ger nu upphov till
NotImplementedErrorpå MySQL istället för att tyst använda icke-transformerade geometrier.django.core.exceptions.DjangoRuntimeWarningär borttagen. Den användes endast i cache-backend som en mellanliggande klass iCacheKeyWarningarv avRuntimeWarning.Bytte namn på
BaseExpression._output_fieldtilloutput_field. Du kan behöva uppdatera anpassade uttryck.I äldre versioner kombinerar formulär och formuläruppsättningar sin
Mediamed widgetensMediagenom att konkatenera de två. Kombinationen försöker nu bevara den relativa ordningen på elementen i varje lista.MediaOrderConflictWarningutfärdas om ordningen inte kan bevaras.django.contrib.gis.gdal.OGRExceptionär borttagen. Det har varit ett alias förGDALExceptionsedan Django 1.8.Stöd för GEOS 3.3.x har tagits bort.
Sättet på vilket data väljs för
GeometryFieldhar ändrats för att förbättra prestanda, och i råa SQL-frågor måste dessa fält nu omslutas avconnection.ops.select. Se Raw queries note i GIS-handledningen för ett exempel.
Funktioner som inte längre är aktuella i 2.0¶
context argument för Field.from_db_value() och Expression.convert_value()¶
Argumentet context i Field.from_db_value() och Expression.convert_value() är oanvänt eftersom det alltid är en tom ordbok. Signaturen för båda metoderna är nu:
(self, value, expression, connection)
istället för:
(self, value, expression, connection, context)
Stöd för den gamla signaturen i anpassade fält och uttryck finns kvar till Django 3.0.
Diverse¶
Modulen
django.db.backends.postgresql_psycopg2är utfasad till förmån fördjango.db.backends.postgresql. Det har varit ett alias sedan Django 1.9. Detta påverkar endast kod som importerar från modulen direkt. InställningenDATABASERkan fortfarande använda'django.db.backends.postgresql_psycopg2', men du kan förenkla det genom att använda namnet'django.db.backends.postgresql'som lades till i Django 1.9.django.shortcuts.render_to_response()är föråldrad till förmån fördjango.shortcuts.render().render()tar samma argument förutom att det också kräver enrequest.Inställningen
DEFAULT_CONTENT_TYPEär föråldrad. Den fungerar inte bra med tredjepartsappar och är föråldrad eftersom HTML5 till stor del har ersatt XHTML.HttpRequest.xreadlines()är föråldrad till förmån för att iterera över begäran.Nyckelordsargumentet
field_nametillQuerySet.earliest()ochQuerySet.latest()är föråldrat till förmån för att skicka fältnamnen som argument. Skriv.earliest('pub_date')i stället för.earliest(field_name='pub_date').
Funktioner borttagna i 2.0¶
Dessa funktioner har nått slutet av sin utfasningscykel och tas bort i Django 2.0.
Se Funktioner som inte längre är aktuella i 1.9 för detaljer om dessa ändringar, inklusive hur man tar bort användningen av dessa funktioner.
Argumentet
weaktilldjango.dispatch.signals.Signal.disconnect()har tagits bort.django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()har tagits bort.Paketet
django.forms.extrashar tagits bort.Hjälpverktyget
assignment_tagtas bort.Argumentet
hosttillSimpleTestCase.assertsRedirects()har tagits bort. Kompatibilitetslagret som gör att absoluta URL:er kan betraktas som likvärdiga med relativa när sökvägen är identisk har också tagits bort.Field.relochField.remote_field.tohar tagits bort.Argumentet
on_deleteförForeignKeyochOneToOneFieldkrävs nu i modeller och migreringar. Överväg att komprimera migreringar så att du har färre av dem att uppdatera.django.db.models.fields.add_lazy_relation()har tagits bort.När stöd för tidszoner är aktiverat konverterar databasbackends som inte stöder tidszoner inte längre medvetna datatider till naiva värden i UTC när sådana värden skickas som parametrar till SQL-frågor som körs utanför ORM, t.ex. med
cursor.execute().django.contrib.auth.tests.utils.skipIfCustomUser()har tagits bort.Klasserna
GeoManagerochGeoQuerySettas bort.Modulen
django.contrib.gis.geoiphar tagits bort.supports_recursionkontrollen för mallladdare är borttagen från: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()
Mallinläsningsmetoderna
load_templateochload_template_sourceshar tagits bort.Argumentet
template_dirsför mallladdare har tagits bort:django.template.loaders.base.Loader.get_template()django.template.loaders.cached.Loader.cache_key()django.template.loaders.cached.Loader.get_template()django.template.loaders.cached.Loader.get_template_sources()django.template.loaders.filesystem.Loader.get_template_sources()
django.template.loaders.base.Loader.__call__()tas bort.Stöd för anpassade felvyer som inte accepterar en
exception-parameter har tagits bort.Attributet
mime_typefördjango.utils.feedgenerator.Atom1Feedochdjango.utils.feedgenerator.RssFeedhar tagits bort.Argumentet
app_nametillinclude()tas bort.Stöd för att skicka en 3-tupel (inklusive
admin.site.urls) som det första argumentet tillinclude()har tagits bort.Stöd för att ange en URL-instansnamnrymd utan en applikationsnamnrymd har tagits bort.
Field._get_val_from_obj()har tagits bort.django.template.loaders.eggs.Loadertas bort.Parametern
current_appför de funktionsbaserade vyernacontrib.authhar tagits bort.Nyckelordsargumentet
callable_objtillSimpleTestCase.assertRaisesMessage()har tagits bort.Stöd för attributet
allow_tagspåModelAdmin-metoder har tagits bort.Nyckelordsargumentet
enclosuretillSyndicationFeed.add_item()har tagits bort.Aliasen
django.template.loader.LoaderOriginochdjango.template.base.StringOriginfördjango.template.base.Originhar tagits bort.
Se Funktioner som inte längre är aktuella i 1.10 för detaljer om dessa ändringar.
Alternativet
makemigrations --exithar tagits bort.Stöd för direkt tilldelning till en omvänd främmande nyckel eller en relation mellan många och många har tagits bort.
Metoderna
get_srid()ochset_srid()idjango.contrib.gis.geos.GEOSGeometrytas bort.Metoderna
get_x(),set_x(),get_y(),set_y(),get_z()ochset_z()idjango.contrib.gis.geos.Pointtas bort.Metoderna
get_coords()ochset_coords()idjango.contrib.gis.geos.Pointtas bort.Egenskapen
cascaded_unionfördjango.contrib.gis.geos.MultiPolygonhar tagits bort.django.utils.functional.allow_lazy()har tagits bort.Alternativet
shell --plainhar tagits bort.Modulen
django.core.urlresolverstas bort till förmån för dess nya plats,django.urls.CommaSeparatedIntegerFieldtas bort, med undantag för stöd i historiska migreringar.Metoden
Context.has_key()i mallen har tagits bort.Stöd för metoderna
django.core.files.storage.Storage.accessed_time(),created_time()ochmodified_time()har tagits bort.Stöd för frågeuppslagningar som använder modellnamnet när
Meta.default_related_nameär inställt har tagits bort.MySQL-uppslagsordet
__searchhar tagits bort.Shim för att stödja anpassade relaterade manager-klasser utan en
_apply_rel_filters()-metod har tagits bort.Att använda
User.is_authenticated()ochUser.is_anonymous()som metoder istället för egenskaper stöds inte längre.Attributet
Model._meta.virtual_fieldshar tagits bort.Nyckelordsargumenten
virtual_onlyiField.contribute_to_class()ochvirtualiModel._meta.add_field()tas bort.Vyerna
javascript_catalog()ochjson_catalog()är borttagna.django.contrib.gis.utils.precision_wkt()har tagits bort.I multi-table inheritance tas implicit promotion av en
OneToOneFieldtill enparent_linkbort.Stöd för
Widget._format_value()har tagits bort.metoderna
FileFieldget_directory_name()ochget_filename()har tagits bort.Funktionen
mark_for_escaping()och de klasser den använder:EscapeData,EscapeBytes,EscapeText,EscapeStringochEscapeUnicodetas bort.Filtret
escapeanvänder nudjango.utils.html.conditional_escape().Manager.use_for_related_fieldshar tagits bort.Modellens
Manager-arv följer MRO-arvsreglerna. Kravet på att användaMeta.manager_inheritance_from_futureför att välja beteendet tas bort.Stöd för gammaldags middleware med
settings.MIDDLEWARE_CLASSEShar tagits bort.