Nótaí scaoilte Django 2.2Link to this heading
1 Aibreán, 2019
Fáilte go dtí Django 2.2!
Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua <whats-new-2.2>, chomh maith le roinnt: ref: athruithe neamh-chomhoiriúnacha ar chúl<backwards-incompatible-2.2> a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 2.1 nó níos luaithe. <deprecated-features-2.2>We've:ref: `thosaigh an próiseas díghabhála do roinnt gnéithe `.
Féach an treoir:doc: /howto/upgrade-leagan má tá tionscadal atá ann cheana á nuashonrú agat.
<Long-term support release>Ainmnítear Django 2.2 mar a: téarma: `scaoileadh tacaíochta fadtéarmach `. Gheobhaidh sé nuashonruithe slándála ar feadh trí bliana ar a laghad tar éis a scaoilte Tiocfaidh deireadh le tacaíocht don LTS roimhe seo, Django 1.11, i mí Aibreáin 2020.
Comhoiriúnacht PythonLink to this heading
Tacaíonn Django 2.2 le Python 3.5, 3.6, 3.7, 3.8 (amhail 2.2.8), agus 3.9 (amhail 2.2.17). Molaimid** go hard** agus ní thacaímid go hoifigiúil ach leis an scaoileadh is déanaí de gach sraith.
Cad atá nua i Django 2.2Link to this heading
SriantaLink to this heading
Cumasaíonn na ranganna nua:class: ~django.db.Models.CheckConstraint agus:class: ~django.db.models.uniqueConstraint srianta bunachar sonraí saincheaptha a chur leis. <django.db.models.Options.constraints>Cuirtear srianta le samhlacha ag baint úsáide as an rogha: attr: `Meta.Constraints `.
MionghnéitheLink to this heading
django.contrib.adminLink to this heading
Cuireadh rang CSS leis na ceannteidil colún de:class: ~django.contrib.admin.tabularInline.
django.contrib.authLink to this heading
Cuirtear an HttpRequest` anois mar an chéad argóint seasaimh chuig:meth: .remoteUserBackend.configure_user, má ghlacann sé leis.
django.contrib.gisLink to this heading
Cuireadh tacaíocht Oracle leis an bhfeidhm:: class: ~django.contrib.gis.db.Models.Functions.Envelope.
Cuireadh tacaíocht SpatialITE leis na cuardaigh: lookup: coveredby agus:lookup: clúdaire.
django.contrib.postgresLink to this heading
Cinneann an argóint nua ``ordú ``do:class: ~django.contrib.postgres.aggregates.arrayAgg agus:class: ~django.contrib.postgres.aggregates.stringagg ordú na n-eilimintí comhiomlánaithe.
Ceadaíonn na ranganna nua:class: ~django.contrib.postgres.indexes.btreeIndex, :class: ~django.contrib.postgres.indexes.hashIndex agus:class: ~django.contrib.postgres.indexes.spgistIndex a chruthú
B-Tree, hash`, agusSP-Gistinnéacsanna sa bhunachar sonraí.BrinIndexnow has theautosummarizeparameter.Ceadaíonn an paraiméadar nua
search_typede:class: ~django.contrib.postgres.search.searchquery cuardach a dhéanamh ar abairt nó léiriú amh.
django.contrib.staticfilesLink to this heading
Cúltaca bunachar sonraíLink to this heading
Sruthú torthaí leis le haghaidh: meth: .queryset.iterator ar SQLite.
Tuairimí cineálachaLink to this heading
Cuireann an crúca nua:meth: View.setup <django.views.generic.base.View.setup>`tréithe radharc a thosú sula nglaonn sé ar: meth: `~django.views.generic.base.view.dispch. Ligeann sé meascáin tréithe sampla a chur ar bun le húsáid i ranganna leanaí.
IdirnáisiúnúLink to this heading
Tacaíocht agus aistriúcháin leis an teanga Airméinis.
Orduithe BainistíochtaLink to this heading
Cuireann an rogha nua:rogha: --force-dath iallach ar an aschur ordaithe a dhathú.
: djadmin: Cruthaíonn inspectdb samhlacha anois do tháblaí eachtracha ar PostgreSQL.
inspectdb --include-viewsnow creates models for materialized views on Oracle and PostgreSQL.Ligeann an rogha nua:option: inspectdb --include-parttions samhlacha a chruthú le haghaidh táblaí deighilte ar PostgreSQL. I leaganacha níos sine, cruthaítear samhlacha táblaí leanbh ina ionad an tuismitheoir.
: djadmin: inspectdb anois introspects:class: ~django.db.models.durationfield do Oracle agus PostgreSQL, agus:class: ~django.db.models.autofield le haghaidh SQLite.
Ar Oracle, :djadmin: tá dbshell fillte le
rlwrap, má tá sé ar fáil. Soláthraíonnrlwrapstair ordaithe agus eagarthóireacht ionchur méarchláir.Seachnaíonn an rogha nua:option: makemigrations --no-header tráchtanna ceanntásc a scríobh i gcomhad (í) imirce ginte. Tá an rogha seo ar fáil freisin le haghaidh: djadmin: squashmigrations.
runservercan now use Watchman to improve the performance of watching a large number of files for changes.
ImirceLink to this heading
Priontáil an rogha nua:option: `migration --plan 'liosta na n-oibríochtaí imirce a dhéanfar.
Is féidir
nonetypea shraitheadh anois in imirce.<custom-migration-serializers>Is féidir leat anois:ref: sraitheoirí saincheaptha a chlárúch le haghaidh imirce.
SamhlaLink to this heading
Tacaíocht bhreise do ranganna oibreora PostgreSQL (:attr: .index.opClasses).
Tacaíocht bhreise le haghaidh innéacsanna páirteach (:attr: .index.condition).
<math-functions>Cuireadh feidhmeanna bunachar sonraí: class: ~django.db.models.functions.nullif agus:class: ~django.db.models.functions.reverse feidhmeanna bunachar sonraí leis, chomh maith le go leor: ref: `feidhmeanna bunachar sonraí math `.
Ag socrú an paraiméadar nua
ignore_conflictsde:meth: .queryset.bulk_create goTrue, insíonn sé don bhunachar sonraí neamhaird a dhéanamh ar theip ar shraitheanna a chur isteach nach dteipeann srianta uathúlachta nó seiceálacha eile.Baineann an fheidhm nua:class: ~django.db.Models.Functions.ExtractisoYear blianta uimhrithe seachtaine ISO-8601 ó:class: ~django.db.Models.DateField agus:class: ~Django.db.Models.DateTimeField, agus ceadaíonn an nua:lookup: iso_year fiosrú ag ISO-8601 bliain uimhrithe seachtaine.
Ligeann an modh nua:meth: .queryset.bulk_update réimsí sonracha a nuashonrú go héifeachtúil ar chásanna samhail iolracha.
Ní thosaíonn Django idirbheart a thuilleadh nuair a bhíonn ceist amháin á dhéanamh, mar shampla
Model.save () ``, `QuerySet.Update (), agus ``Model.delete () ``. Feabhsaíonn sé seo feidhmíocht autocommit trí líon na dturais babhta bunachar sonraí a laghdú.Cuireadh tacaíocht SQLite leis na feidhmeanna: class: ~django.db.models.stddev agus:class: ~django.db.models.variance.
Cuirtear láimhseáil comhiomlánú
DISTINCTleis an aicme:class: ~django.db.Models.Aggregate. <django.db.models.Aggregate.allow_distinct>Ag cur leis: attr: allow_different = True `mar thréith aicme ar fho-aicmí ``Comhléad` ceadaíonn argóint eochairfhocaldistinta shonrú ar thionscnamh chun a chinntiú nach n-iarrtar an fheidhm chomhiomlán ach do gach luach ar leith de ``léiritheach`.Ceadaítear modhanna: Meth: .relatedManager.add, :meth: ~.relatedManager.create, :meth: ~.relatedManager.remove, :meth: ~.relatedManager.set,
get_or_create () ``, agus ``update_or_create () `modhanna idirmheánach anois ar go leor le go leor le go leor samhlacha. Úsáidtear an argóint nua `through_defaultschun luachanna a shonrú do shampla (í) samhail idirmheánach nua.
Iarrataí agus FreagraíLink to this heading
Cuireadh leis: attr: .httpRequest.headers chun rochtain shimplí a cheadú ar cheanntásc iarratais.
SraitheadhLink to this heading
Is féidir leat sonraí a dhísherialú anois ag baint úsáide as eochracha nádúrtha ina bhfuil: ref: tagairtí ar aghaidh `trí `handle_forward_references=true`<natural-keys-and-forward-references> a chur chuig ``serializers.deserialize () ``. Ina theannta sin, láimhseálann :djadmin: loaddata tagairtí ar aghaidh go huathoibríoch.
TástálachaLink to this heading
Seiceálann an dearbhú nua:meth: .simpletestCase.asserturleQual ar URL ar leith, ag neamhaird d'ordú an teaghrán fiosrúcháin. :meth: ~.SimpleTestCase.AssertDirects úsáideann an dearbhú nua.
Tacaíonn an tástála:class: ~.django.test.client anois le sraitheadh JSON uathoibríoch ar liosta agus tuple
sonanuair a bhíonncontent_type = 'application/json'.Ceadaíonn an socrú bunachar sonraí tástála nua:setting: `ORACLE_MANAGED_FILES <TEST_ORACLE_MANAGED_FILES>`spásanna tábla Comhaid Bainistithe Oracle (OMF) a úsáid.
Déantar srianta bunachar sonraí inathraithe a sheiceáil anois ag deireadh na tástála gach ceach:class: ~django.test.testcase ar SQLite 3.20+, díreach cosúil le cúltaca eile a thacaíonn le srianta in-iarchurraithe. Ní chuirtear na seiceálacha seo i bhfeidhm le haghaidh leaganacha níos sine de SQLite toisc go mbeadh ionstraim tábla daor ag teastáil uathu ansin.
<testing-multi-db>:class: ~django.test.runner.DiscoverRunner scipeann anois socrú na mbunachair sonraí not:ref: `tagraítear le tástálacha `.
URLannaLink to this heading
Stórálann an tréith nua:attr: .resolvermatch.route bealach an phatrún meaitseála URL.
BailíochtóiríLink to this heading
MaxValueValidator,MinValueValidator,MinLengthValidator, andMaxLengthValidatornow accept a callablelimit_value.
Athruithe neamh-chomhoiriúnacha ar ais i 2.2Link to this heading
API cúltaca bunachar sonraíLink to this heading
Déanann an rannán seo cur síos ar athruithe a d’fhéadfadh a bheith ag teastáil ar dhroim bhunachar sonraí tríú páirtí.
Caithfidh cúltaca bunachar sonraí tríú páirtí tacaíocht a chur i bhfeidhm le haghaidh srianta seiceála tábla nó
DatabaseFeatures.supports_table_check_restricintsa shocrú goFalse.Caithfidh cúltaca bunachar sonraí tríú páirtí tacaíocht a chur i bhfeidhm chun neamhaird a dhéanamh ar srianta nó earráidí uathúlachta agus iad ag cur
databaseFeatures.supports_ignore_conflictsisteach nó a shocrú go False`.Caithfidh cúltaca bunachar sonraí tríú páirtí ionspéireacht a chur i bhfeidhm do DurationField` nó
databaseFeatures.can_introspect_duration_fielda shocrú goFalse.Tá
DatabaseFeatures.Ues_SavePointsréamhshocraithe anois goTrue.Caithfidh cúltaca bunachar sonraí tríú páirtí tacaíocht d'innéacsanna páirteach a chur i bhfeidhm nó
DatabaseFeatures.supports_Partial_indexesa shocrú go False`.Baintear
databaseintrospection.table_name_converter () ``agus ``column_name_converter (). B'fhéidir go mbeidh ar chúltaca bunachar sonraí tríú páirtíDatabaseIntrospection.Identifier_Converter ()a chur i bhfeidhm ina ionad sin. Sa chás sin, ní mór na hainmneacha srianta a thugannDatabaseIntrospection.get_Constraints ()a normalú le ``identificfier_converter () ``.Bogtar giniúint SQL le haghaidh innéacsanna ó:class: ~django.db.models.index go
SchemaEditoragus cuirtear na modhannaSchemaEditorseo leis:An tríú argóint de
DatabaseWrapper. Baintear __init__ () ``, `allow_thread_sharing.
Ní bhailítear gníomhartha riaracháin ó bhonn ranganna ``ModelAdmin` a thuilleadhLink to this heading
Mar shampla, i leaganacha níos sine de Django:
from django.contrib import admin
class BaseAdmin(admin.ModelAdmin):
actions = ["a"]
class SubAdmin(BaseAdmin):
actions = ["b"]
Bheadh gníomhartha 'a' agus `b' ag subadmin.
Anois leanann ``gníomhaíochtaí ``oidhreacht chaighdeánach Python. Chun an toradh céanna a fháil agus roimhe seo:
class SubAdmin(BaseAdmin):
actions = BaseAdmin.actions + ["b"]
django.contrib.gisLink to this heading
Titear tacaíocht do GDAL 1.9 agus 1.10.
``TransactionTestCase ``luchtú sonraí sraitheachLink to this heading
Tá imirce sonraí tosaigh luchtaithe anois in:class: ~django.test.transactionTestCase ag deireadh na tástála, tar éis an bunachar sonraí a shruthlú. I leaganacha níos sine, luchtaíodh na sonraí seo ag tús na tástála, ach cuireann sé seo cosc ar an rogha: test --keepdb oibriú i gceart (bhí an bunachar sonraí folamh ag deireadh an tsraith tástála iomlán). Níor chóir go mbeadh tionchar ag an athrú seo ar do thástálacha mura bhfuil inmheánacha: class: ~django.test.transactionTestCase saincheaptha agat.
Tá spleáchas ag teastáil sqlparseLink to this heading
<sqlparse>Chun cúpla cuid de láimhseáil bunachar sonraí Django a shimpliú, is spleáchas riachtanach anois é: pypi: `sqlparse 0.2.2+ `. Tá sé suiteáilte go huathoibríoch mar aon le Django.
Ainmneacha cached_propertyLink to this heading
In úsáid cosúil le:
from django.utils.functional import cached_property
class A:
@cached_property
def base(self):
return ...
alias = base
Ní chuirtear alias a chosc. Nuair is féidir an fhadhb a bhrath (Python 3.6 agus níos déanaí), ardaíonn úsáid den sórt sin anois ``TypeError: Ní féidir an cached_property céanna a shannadh do dhá ainm éagsúla ('bonn' agus 'alias') . ``
Úsáid é seo ina ionad sin:
import operator
class A:
...
alias = property(operator.attrgetter("base"))
Ceadanna le haghaidh samhlacha seachfLink to this heading
Permissions for proxy models are now
created using the content type of the proxy model rather than the content type
of the concrete model. A migration will update existing permissions when you
run migrate.
Sa riarachán, tá an t-athrú trédhearcach do mhúnlaí seachfhreastalaí a bhfuil an app_label` céanna acu lena samhail choincréite. Mar sin féin, i leaganacha níos sine, ní fhéadfadh úsáideoirí a bhfuil ceadanna acu le haghaidh samhail seachfhreastalaí len*difriol* app_label ná a mhúnla coincréite rochtain a fháil ar an tsamhail sa riarachán. Tá sé sin socraithe anois, ach b'fhéidir gur mhaith leat iniúchadh a dhéanamh ar na tascanna ceadanna do mhúnlaí seachfhreastalaí den sórt sin ([add|view|change|scriosadh] _myproxy) sula ndéanann tú uasghrádú chun a chinntiú go bhfuil an rochtain nua oiriúnach.
Faoi dheireadh, ní mór teaghráin cead samhail seachfhreastalaí a nuashonrú chun a app_label féin a úsáid. Mar shampla, le haghaidh App.MyProxyModel a fhaigheann oidhreacht ó Other_App.ConcreteModel, nuashonraigh user.has_perm ('other_app.add_myproxymodel') ``go `user.has_perm ('app.add_myproxymodel').
Sócmhainní foirm ``Meáin ``a chumascLink to this heading
Déantar sócmhainní foirm ``Meáin ``a chumasc anois ag baint úsáide as algartam sórtála topolaíoch, toisc nach leor an sean-algartam cumaisc péire do roinnt cásanna. Féadfar comhaid CSS agus JavaScript nach n-áirítear a spleáchas a shórtáil go mícheart anois (nuair a tháirg an sean-algartam torthaí i gceart trí chomhtharlú).
Déan iniúchadh ar gach rang `Meáin ``le haghaidh aon spleáchais atá in easnamh. <assets-as-a-static-definition>Mar shampla, ní mór giuirléidí ag brath ar ``django.jquery ``js= ['admin/js/jquery.init.js',...] ``a shonrú nuai:ref: `foirm sócmhainní meán a dhearbhú `.
IlghnéitheachLink to this heading
Chun inléiteacht a fheabhsú, taispeánann an réimse foirm
UUIDFieldluachanna le daingíní anois, m.sh.550e8400-e29b-41d4-a716-446655440000in ionad550e8400e29b41d4a716446655440000.Ar SQLite, cuimsíonn
PositiveIntegerFieldagusPositiveSmallIntegerFieldsrian seiceála anois chun luachanna diúltacha sa bhunachar sonraí a chosc. Má tá sonraí neamhbhailí ann cheana agat agus má reáchtáil imirce a athchruthaíonn tábla, feicfidh tú ``Thaipeadh srian SEICEÁIL ``.Le haghaidh comhsheasmhachta le freastalaithe WSGI, socraíonn an cliant tástála an ceannteideal ``Content-Length` anois go sreang seachas sláimhir.
Níl luach tuairisceáin de:func: django.utils.text.slugify marcáilte a thuilleadh mar HTML sábháilte.
Is é an carachtar truncation réamhshocraithe a úsáideann na:tfilter: urlizetrunc, :tfilter: truncatechars, :tfilter: truncatechars_html, :tfilter: truncatewords, agus:tfilter: truncatewords_html scagairí an fíor-charachtar ellipsis anois (
...) in ionad 3 ponc. B'fhéidir go mbeidh ort roinnt comparáidí aschur tástála a oiriúnú.Baintear tacaíocht do chosáin bytestring sa lódóir córas comhaid teimpléad.
django.utils.http.urlsafe_base64_encode()now returns a string instead of a bytestring, anddjango.utils.http.urlsafe_base64_decode()may no longer be passed a bytestring.Méadaítear an leagan íosta tacaithe de mysqlclient` ó 1.3.7 go 1.3.13.
Méadaítear an leagan íosta tacaithe de SQLite ó 3.7.15 go 3.8.3.
In iarracht níos mó sonraí fiosrúcháin shéimeantacha a sholáthar, tugann
NullBooleanSelectanois luachanna``neamhfhiosna, true`, agusbréagin ionad`1 <option>, 2`, agus3. Maidir le comhoiriúnacht ar ais, glactar leis na seanluachanna mar shonraí fós.Group.namemax_lengthis increased from 80 to 150 characters.Déanann tástálacha a sháraíonn srianta bunachar sonraí in-iarchurraithe botún anois agus iad á reáchtáil ar SQLite 3.20+, díreach cosúil le cúltaca eile a thacaíonn le srianta sin.
Chun botúin úsáide a ghabháil, ardaíonn an tást:class: ~django.test.client agus:func: django.utils.http.urlencode
typeErroranois má chuirtearNonemar luach le ionchódú toisc nach féidirNonea ionchódú i sonraí GET agus POST. Téigh sreang folamh nó fág an luach.Tá an t-ordú bainistíochta ping_google` réamhshocraithe anois go
httpsin ionadhttple haghaidh URL an léarscáileáin an léarscáileáin. Má úsáideann do shuíomh http, bain úsáid as an rogha nuaping_google --sitemap-uses-http. Má úsáideann tú an fheidhmdjango.contrib.sitemaps.ping_google, socraigh an argóint nuasitemap_uses_httpsgoFalse.runserverno longer supportspyinotify(replaced by Watchman).Seolann an: Class: ~Django.DB.Models.AVG, :class: ~Django.db.Models.stddev, agus:class: ~Django.db.Models.Variance feidhmeanna comhiomlán
Decimalanois seachasfloatnuair is é an t-ionchur Decimal`.Teipeann ar thástálacha ar SQLite má tá caidreamh ag aipeanna gan imirce le feidhmchláir le himirce. Is srian doiciméadaithe é seo ó cuireadh imirce i Django 1.7, ach teipeann air níos iontaofa anois. <model>Feicfidh tú ag teip ar thástálacha le hearráidí mar ``gan aon tábla den sórt sin: <app_label>_ `. Breathnaíodh é seo le roinnt apps tríú páirtí a raibh samhlacha acu i dtástálacha gan imirce. Ní mór duit imirce a chur le haghaidh samhlacha den sórt sin.
Sláimhir a sholáthar san argóint
keyden: meth: .cache.delete nó:meth: .cache.get ardaíonn anois:exc: valueError.Athraítear cothromóidí iolra do roinnt teangacha, toisc go bhfuil na leaganacha is déanaí ó Transifex ionchorpraithe.
Gnéithe atá díscríofa i 2.2Link to this heading
Ní bheidh tionchar ag múnla Meta.Ordering` i bhfeidhm ar cheisteanna ``GROUP BY ``a thuilleadhLink to this heading
Is foinse choitianta mearbhall é Meta.Ordering samhail a théann i bhfeidhm ar cheisteanna GROUP BY (mar shampla .annotate () .values () ``). Eisíonn fiosrúcháin den sórt sin rabhadh díghrádaithe anois leis an gcomhairle chun ``order_by () ``a chur leis chun an cheist reatha a choinneáil. Déanfar neamhaird ar `Meta.Ordering i gceisteanna den sórt sin ag tosú i Django 3.1.
IlghnéitheachLink to this heading
Tá
Django.Utils.Timezone.fixeDoffsetdíluaite i bhfabhr:class: datetime.timezone.Tá an t-ainm
QuerySetPaginatorneamhdhoiciméadaithe deDjango.Core.Paginator.Paginatora dhíchur.Tá na réimsí samhail agus foirme
FloatRangeFieldi django.contrib.postgres` a dhíchur i bhfabhar ainm nua,DecimalRangeField, chun an cineál sonraí bunúsachnumrangea úsáidtear sa bhunachar sonraí a mheaitseáil.Tá an socrú
FILE_CHARSETa dhíchur. Ag tosú le Django 3.1, caithfear comhaid a léitear ón diosca a ionchódaithe UTF-8.Tá
django.contrib.staticfiles.storage.cachedStaticFilesStoragea dhíchur mar gheall ar na fadhbanna dochreidte atá aige. Úsáid: Class: .ManifestStaticFilesStorage nó stóráil scamall tríú páirtí ina ionad.RemoteUserBackend.configure_user()is now passedrequestas the first positional argument, if it accepts it. Support for overrides that don't accept it will be removed in Django 3.1.Tá na tréithe
SimpleTestCase.ALLOW_DATABASE_Queries, TransactionTestCase.Multi_DB`, agusTestCase.Multi_DBdíluaite i bhfabhr:attr: .simpletestCase.databases, :attr: .TransactionTestCase.databases, agus:attr: .testcase.databases Áiseanna”. Ligeann na tréithe nua seo spleáchas bunachar sonraí a dhearbhú d'fhonn ceisteanna gan choinne i gcoinne bunachair sonraí neamhréamhshocraithe a chosc chun staid sc Is féidir iompar roimhe seoallow_database_queries=trueagusmulti_db=truea bhaint amach trídatabases='__all__'a shocrú.