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`, agus SP-Gist innéacsanna sa bhunachar sonraí.

  • BrinIndex now has the autosummarize parameter.

  • Ceadaíonn an paraiméadar nua search_type de:class: ~django.contrib.postgres.search.searchquery cuardach a dhéanamh ar abairt nó léiriú amh.

django.contrib.staticfilesLink to this heading

  • Breise cosán a mheaitseáil leis an rogha:: collectstatic --ignore ionas gur féidir patrúin mar ``/díoltór/*.js ``a úsáid.

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-views now 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íonn rlwrap stair 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.

  • runserver can 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 nonetype a 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_conflicts de:meth: .queryset.bulk_create go True, 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ú DISTINCT leis 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 eochairfhocal distint a 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_defaults chun 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 sona nuair a bhíonn content_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

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_restricints a shocrú go False.

  • 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_conflicts isteach 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_field a shocrú go False.

  • DatabaseFeatures.Ues_SavePoints réamhshocraithe anois go True.

  • Caithfidh cúltaca bunachar sonraí tríú páirtí tacaíocht d'innéacsanna páirteach a chur i bhfeidhm nó DatabaseFeatures.supports_Partial_indexes a 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 thugann DatabaseIntrospection.get_Constraints () a normalú le ``identificfier_converter () ``.

  • Bogtar giniúint SQL le haghaidh innéacsanna ó:class: ~django.db.models.index go SchemaEditor agus cuirtear na modhanna SchemaEditor seo leis:

    • _create_primary_key_sql () ``agus ``_delete_primary_key_sql ()

    • _delete_index_sql () ``(le péireáil le ``_create_index_sql ())

    • _delete_unique_sql (le péireáil le ``_create_unique_sql () ``)

    • _delete_fk_sql () ``(le péireáil le ``_create_fk_sql ())

    • _create_check_sql () ``agus ``_delete_check_sql ()

  • 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:

Code
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:

Code
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:

Code
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:

Code
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, 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 UUIDField luachanna le daingíní anois, m.sh. 550e8400-e29b-41d4-a716-446655440000 in ionad 550e8400e29b41d4a716446655440000.

  • Ar SQLite, cuimsíonn PositiveIntegerField agus PositiveSmallIntegerField srian 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, and django.utils.http.urlsafe_base64_decode() may no longer be passed a bytestring.

  • Baintear tacaíocht do ``CX_Oracle ``< 6.0.

  • 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 NullBooleanSelect anois luachanna ``neamhfhiosna, true`, agus bréag in ionad `1 <option>, 2`, agus 3. Maidir le comhoiriúnacht ar ais, glactar leis na seanluachanna mar shonraí fós.

  • Group.name max_length is 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 typeError anois má chuirtear None mar luach le ionchódú toisc nach féidir None a 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 https in ionad http le 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 nua ping_google --sitemap-uses-http. Má úsáideann tú an fheidhm django.contrib.sitemaps.ping_google, socraigh an argóint nua sitemap_uses_https go False.

  • runserver no longer supports pyinotify (replaced by Watchman).

  • Seolann an: Class: ~Django.DB.Models.AVG, :class: ~Django.db.Models.stddev, agus:class: ~Django.db.Models.Variance feidhmeanna comhiomlán Decimal anois seachas float nuair 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 key den: 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

  • Django.Utils.Timezone.fixeDoffset díluaite i bhfabhr:class: datetime.timezone.

  • Tá an t-ainm QuerySetPaginator neamhdhoiciméadaithe de Django.Core.Paginator.Paginator a dhíchur.

  • Tá na réimsí samhail agus foirme FloatRangeField i django.contrib.postgres` a dhíchur i bhfabhar ainm nua, DecimalRangeField, chun an cineál sonraí bunúsach numrange a úsáidtear sa bhunachar sonraí a mheaitseáil.

  • Tá an socrú FILE_CHARSET a dhíchur. Ag tosú le Django 3.1, caithfear comhaid a léitear ón diosca a ionchódaithe UTF-8.

  • django.contrib.staticfiles.storage.cachedStaticFilesStorage a 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 passed request as 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`, agus TestCase.Multi_DB dí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 seo allow_database_queries=true agus multi_db=true a bhaint amach trí databases='__all__' a shocrú.