---
title: "Nótaí scaoileadh Django 4.1"
version: 5.2
locale: ga
source: https://docs.djangoproject.com/ga/5.2/releases/4.1/
canonical: https://djangodocs.dev/ga/5.2/releases/4.1/
---
# Nótaí scaoileadh Django 4.1

*3 Lúnasa, 2022*

Fáilte go dtí Django 4.1!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua \<whats-new-4.1\>, chomh maith le roinnt athruithe: ref: athruithe neamh-chomhoiriúnacha ar ais\<backwards-incompatible-4.1\> beidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 4.0 nó níos luaithe. \<deprecated-features-4.1\>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.

## Comhoiriúnacht Python

Tacaíonn Django 4.1 le Python 3.8, 3.9, 3.10, agus 3.11 (amhail 4.1.3). 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 4.1

### Láimhseálaithe asincrónacha le haghaidh tuairimí rang-bhunaithe

Féadfaidh féachaint ar fho-aicmí láimhseálaithe modh HTTP async a shainiú anois:

```
import asyncio
from django.http import HttpResponse
from django.views import View

class AsyncView(View):
    async def get(self, request, *args, **kwargs):
        # Perform view logic using await.
        await asyncio.sleep(1)
        return HttpResponse("Hello async world!")
```

Féach: ref: async-class-based-views le haghaidh tuilleadh sonraí.

### Comhéadan ASINCRONACH ORM

Soláthraíonn ```QuerySet ``comhéadan asincrónach anois do gach oibríocht rochtana sonraí. Ainmnítear iad seo de réir na n-oibríochtaí sioncrónacha atá ann cheana ach le réimír ``a```, mar shampla ```acreate () ``, `aget ()```, agus mar sin de.

Ligeann an comhéadan nua duit cód asincrónach a scríobh gan gá d'oibríochtaí ORM a fhilleadh i sync\_to\_async () \`:

```
async for author in Author.objects.filter(name__startswith="A"):
    book = await author.books.afirst()
```

Tabhair faoi deara, ag an gcéim seo, go bhfanann na hoibríochtaí bunúsacha bunachar sonraí sioncrónach, agus ranníocaíochtaí leanúnach ar aghaidh chun tacaíocht asincrónach a bhrú síos isteach sa thiomsaitheoir SQL, agus tiománaithe bunachar sonraí asincr Cuimsíonn an comhéadan nua ceisteanna asincrónach na hoibríochtaí riachtanacha sync\_to\_async () duit faoi láthair, agus ligfidh sé do chód leas a bhaint as forbairtí i dtacaíocht asincrónach an ORM de réir mar a fhorbraíonn sé.

Féach: ref: async-queries le haghaidh sonraí agus teorainneacha.

### Bailíochtú Srianta

\<django.db.models.Options.constraints\>\<validating-objects\>:class: Seiceáil \`, :class: \`uath \<django.db.models.CheckConstraint\>úil, agus:class: eisiamh \<django.db.models.UniqueConstraint\>\`srianta atá sainmhínithe sa roghnaí: \<django.contrib.postgres.constraints.ExclusionConstraint\>attr: \`Meta.Constraints déantar seiceáil anois trí:ref: bailíochtú samhail .

### Inrochtaineacht rindreála

Chun cabhrú le húsáideoirí le léitheoirí scáileáin, agus le teicneolaíocht chúnta eile, tá teimpléid foirm nua bunaithe ar `<div>` ar fáil ón eisiúint seo. Soláthraíonn siad seo nascleanúint níos inrochtana ná na teimpléid níos sine, agus tá siad in ann rialuithe gaolmhara, mar raidió-liostaí, a ghrúpáil i gceart i dtaca le réimsí páirce.

Moltar na teimpléid nua, agus beidh siad ina stíl rindreála foirme réamhshocraithe agus foirm á aschur, cosúil le {{form}} i dteimpléad, ó Django 5.0.

D'fhonn glacadh leis an stíl aschuir nua a éascú, tá na teimpléid réamhshocraithe foirme agus foirmeacha inchumraithe anois ag leibhéal an tionscadail tríd an socrú: setting: FORM\_RENDER.

Féach: Tagairt: an chuid Foirmeacha (thíos) \<forms-4.1\>\`le haghaidh sonraí iomlána.

### `CSRF_COOKIE_MASKED` socrú

Ligeann an socrú idirthréimhseach nua `CSRF_COOKIE_MASKED` a shonrú an féidir an fianán CSRF a mhaolú.

[`CsrfViewMiddleware`](/ga/5.2/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware) no longer masks the CSRF
cookie like it does the CSRF token in the DOM. If you are upgrading multiple
instances of the same project to Django 4.1, you should set
`CSRF_COOKIE_MASKED` to `True` during the transition, in order to allow
compatibility with the older versions of Django. Once the transition to 4.1 is
complete you can stop overriding `CSRF_COOKIE_MASKED`.

Tá an socrú seo imithe amhail an eisiúint seo agus bainfear é i Django 5.0.

### Mionghnéithe

#### [`django.contrib.admin`](/ga/5.2/ref/contrib/admin/#module-django.contrib.admin)

- Cuirtear na hathróga CSS modh dorcha admin: ref: i bhfeidhm anois i \<admin-theming\>mbileog stíl agus i mbloc teimpléad ar leithligh.
- [ModelAdmin Scagairí Liosta](/ga/5.2/ref/contrib/admin/filters/#modeladmin-list-filters) providing custom `FieldListFilter`
  subclasses can now control the query string value separator when filtering
  for multiple values using the `__in` lookup.
- Tá an admin:meth: amharc stair \<django.contrib.admin.ModelAdmin.history\_view\>\`leathanaigh anois.
- Tá nasc anois ag fillteáin giuirléidí gaolmhara le foirm athraithe réad.
- Ceadaíonn an modh: Meth: .adminsite.get\_app\_list anois ord na n-aipeanna agus na samhlacha a athrú ar an leathanach innéacs riaracháin.

#### [`django.contrib.auth`](/ga/5.2/topics/auth/#module-django.contrib.auth)

- Méadaítear an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2 ó 320,000 go 390,000.
- Ceadaíonn an modh: Meth: .remoteUserBackend.configure\_user anois tréithe úsáideora a shioncronú le tréithe i gcóras iargúlta mar eolaire LDAP.

#### [`django.contrib.gis`](/ga/5.2/ref/contrib/gis/#module-django.contrib.gis)

- Ceadaíonn an modh nua:meth: .geosgeometry.make\_valid () geoiméadraí neamhbhailí a thiontú go cinn bailí.
- Ligeann an argóint nua `clone` le haghaidh: meth: .geosgeometry.normalize clón normalaithe den ghéimseadracht a chruthú.

#### [`django.contrib.postgres`](/ga/5.2/ref/contrib/postgres/#module-django.contrib.postgres)

- Tugann an fheidhm chomhiomlán nua:class: BitXor () \<django.contrib.postgres.aggregates.BitXor\>\`\`int\` den XOR\` bitwise de na luachanna ionchuir neamh-null go léir.
- [`SpGistIndex`](/ga/5.2/ref/contrib/postgres/indexes/#django.contrib.postgres.indexes.SpGistIndex) now supports covering
  indexes on PostgreSQL 14+.
- [`ExclusionConstraint`](/ga/5.2/ref/contrib/postgres/constraints/#django.contrib.postgres.constraints.ExclusionConstraint) now
  supports covering exclusion constraints using SP-GiST indexes on PostgreSQL
  14+.
- \<django.contrib.postgres.fields.DateTimeRangeField.default\_bounds\>\<django.contrib.postgres.fields.DecimalRangeField.default\_bounds\>Ceadaíonn an tréith nua default\_limits de:attr: DateTimeRangeField \`agus:attr: \`DecimalRangeField teorainneacha a shonrú le haghaidh ionchuir liosta agus tuple.
- \<django.contrib.postgres.indexes.OpClass\>:class: ~django.contrib.postgres.restricints.ExclusionConstraint ceadaíonn anois ranganna oibreora a shonrú leis an abairt: class: opClass () .

#### [`django.contrib.sitemaps`](/ga/5.2/ref/contrib/sitemaps/#module-django.contrib.sitemaps)

- Áiríonn an teimpléad réamhshocraithe innéacs léarscáil an láithreáin \`\` \<sitemapindex\>\`\` an stampa ama \`\` \<lastmod\>\`\` anois má tá sé ar fáil, tríd an modh nua [`get_latest_lastmod()`](/ga/5.2/ref/contrib/sitemaps/#django.contrib.sitemaps.Sitemap.get_latest_lastmod). Ba cheart teimpléid innéacs léarscáileanna suímh saincheaptha a nuashonrú le haghaidh na n-athróg coigeartaithe context.

#### [`django.contrib.staticfiles`](/ga/5.2/ref/contrib/staticfiles/#module-django.contrib.staticfiles)

- [`ManifestStaticFilesStorage`](/ga/5.2/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage) now
  replaces paths to CSS source map references with their hashed counterparts.

#### Cúltaca bunachar sonraí

- Is féidir le cúltaca bunachar sonraí tríú páirtí an leagan íosta riachtanach den bhunachar sonraí a shonrú anois ag baint úsáide as an tréith `databaseFeatures.MINIMUM_DATABASE_VERSION` atá tuple (m.sh. ciallaíonn `(10, 0)` “10.0"). Má shonraítear leagan íosta, ní mór do chúltaca ```DatabaseWrapper.get_database_version () `a chur i bhfeidhm freisin, a thugann tuple den leagan reatha bunachar sonraí. Caithfidh modh ``DatabaseWrapper.init_CONNECTION_STATE () ``sa chúlcheann ``super ()``` glaoch ar super () d'fhonn an seiceáil a rith.

#### Foirmeacha

- Tá an teimpléad réamhshocraithe a úsáidtear chun foirmeacha a rinneadh nuair a chaitheadh chuig teaghrán, m.sh. i dteimpléid mar `{{form}}`, inchumraithe ag leibhéal an tionscadail anois trí shocting:attr: ~django.forms.renderers.baserenderer.form\_template\_name ar an rang a chuirtear ar fáil d':setting: FORM\_RENDER.

  [`Form.template_name`](/ga/5.2/ref/forms/api/#django.forms.Form.template_name) is now a property deferring to the renderer, but
  may be overridden with a string value to specify the template name per-form
  class.

  Ar an gcaoi chéanna, is féidir an teimpléad réamhshocraithe a úsáidtear chun foirmeacha a rindreáil a shonrú tríd an tréith renderer matching:attr: ~django.forms.renderers.baserenderer.formset\_template\_name.
- \<div\>An teimpléad foirme nua `div.html`, tagairt:attr: .form.template\_name\_div tréith, agus modh comhoiriúnaithe:meth: .form.as\_div, déanann foirmeacha ag baint úsáide as eilimintí HTML .

  \<fieldset\>\<legend\>Moltar an stíl aschuir nua seo thar na stíleanna: meth: ~.form.as\_table, :meth: ~.form.as\_p agus:meth: ~.form.as\_ul atá ann, de réir mar a chuireann an teimpléad \`\` agus i bhfeidhm chun ionchuir gaolmhara a ghrúpa agus tá sé níos éasca d'úsáideoirí léitheoirí scáileáin nascleanúint a dhéanamh.

  Beidh an t-aschur div-bhunaithe mar stíl rindreála réamhshocraithe ó Django 5.0.
- D'fhonn glacadh go réidh leis an \<div\>stíl aschuir nua ``` `, tá dhá aicme idirthréimhseacha ar fáil: ``django.forms.renderers.djangodivFormRenderer ``` agus `django.forms.renderers.jinja2divFormRenderer`, le haghaidh cúltaca teimpléad Django agus Jinja2 faoi seach.

  Is féidir leat ceann díobh seo a chur i bhfeidhm tríd an socrú:setting: FORM\_RENDER. Mar shampla:

  ```
  FORM_RENDERER = "django.forms.renderers.DjangoDivFormRenderer"
  ```

  Chomh luath agus \<div\>is é an stíl aschuir ``an réamhshocraithe, ó Django 5.0, cuirfear na léiritheoirí idirthréimhseacha seo a dhíchur, lena bhaint i Django 6.0. Is féidir an dearbhú `FORM_RENDER`` a bhaint ag an am sin.
- Mura bhfuil an \<div\>stíl aschuir nua oiriúnach do do thionscadal, ba cheart duit fo-aicme renderóra a shainmhíniú:attr: \`~django.forms.renderers.baserenderer.form\_template\_name agus:attr: ~django.forms.renderers.baserenderer.formset\_template\_name don stíl riachtanach, agus socraí:setting: FORM\_RENDERER\` dá réir sin.

  Mar shampla, maidir leis an \<p\>stíl aschuir \`\` a úsáideann:: ~.form.as\_p, sainmhíneoidh tú rindreoir foirme ag socrú `form_template_name` go `” django/forms/p.html “` agus `formset_template_name` go `” django/forms/formsets/p.html “`.
- \<legend\>Ceadaíonn an nua:meth: ~django.forms.boundfield.legend\_tag lipéid réimse a rindreáil i gclibeanna \`\` tríd an argóint nua `tag` de:meth: ~django.forms.boundfield.label\_tag.
- Ceadaíonn an argóint nua `edit_only` le haghaidh: func: .modelformset\_factory agus:func: .inlineformset\_factory cruthú rudaí nua a chosc.
- Ceadaíonn tréithe aicme js\` agus css\` de:doc: Meáin \`anois rudaí hashable a úsáid, ní amháin teaghráin cosáin, chomh fada agus a chuireann na rudaí sin an modh \`\`\_\_html\_\_ () \`\`i bhfeidhm (de ghnáth nuair a bhíonn maisithe leis an maisitheoir: func: \`~django.u\</topics/forms/media\> tils.html\_safe).
- \<fieldset\>\<legend\>Cuidíonn na tréithe nua:attr: .boundfield.use\_fieldSet agus:attr: .widget.use\_fieldSet le giuirléidí a aithint inar chóir a ionchuir a ghrúpáil i \`\` le .
- Ceadaíonn an argóint:ref: formsets-error-teachtaireachtaí do:class: \`~django.forms.formsets.baseformset teachtaireachtaí earráide a shaincheapadh le haghaidh líon neamhbhailí foirmeacha trí eochracha too\_few\_forms' agus too\_many\_forms' a rith.
- [`IntegerField`](/ga/5.2/ref/forms/fields/#django.forms.IntegerField), [`FloatField`](/ga/5.2/ref/forms/fields/#django.forms.FloatField), and
  [`DecimalField`](/ga/5.2/ref/forms/fields/#django.forms.DecimalField) now optionally accept a `step_size`
  argument. This is used to set the `step` HTML attribute, and is validated
  on form submission.

#### Idirnáisiúnú

- Tacaíonn an fheidhm:func: ~django.conf.urls.i18n.i18n\_patterns le teangacha anois le scripteanna agus réigiúin araon.

#### Orduithe Bainistíochta

- [`makemigrations --no-input`](/ga/5.2/ref/django-admin/#cmdoption-makemigrations-noinput) now logs default answers and reasons why
  migrations cannot be created.
- Déanann an rogha nua:option: makemigrations --scriptable aschur log agus leideanna ionchuir a atreorú chuig `stderr`, agus ní scríobhann ach cosáin de chomhaid imirce ginte chuig `stdout`.
- Ceadaíonn an rogha nua:option: migration --prune 'imirce nach bhfuil ann a scriosadh ón tábla \`\`django\_migrations\`.
- Déantar comhaid Python a chruthaí:djadmin: startproject, :djadmin: startapp, :djadmin: optimisation \`, :djadmin: \`makemigrations, agus:djadmin: squashmigrations a fhormáidiú anois ag baint úsáide as an ordú `black` má tá sé i láthair ar do PATH\`.
- Ligeann an t-ordú nua:djadmin: optimisation emigration oibríochtaí a bharrfheabhsú le haghaidh imirce.

#### Imirce

- \<django.db.models.Options.indexes\>Ceadaíonn an oibríocht nua:class: ~django.db.migrations.operations.RenameIndex innéacsanna a athainmniú atá sainmhínithe sna roghanna: attr: Meta.Indexes \`nó \`\`index\_together \`.
- \<django.db.models.Options.indexes\>Gineann an autodetector imirce anois:class: ~django.db.migrations.Operations.RenameIndex oibríochtaí in ionad `removeIndex` agus AddIndex\`, nuair a athainmníonn innéacsanna atá sainmhínithe in:attr: Meta.Indexes .
- \<django.db.models.Options.indexes\>Gineann an autodetector imirce anois:class: ~django.db.migrations.operations.RenameIndex oibríochtaí in ionad `AlterIndexTogether` agus AddIndex\`, agus innéacsanna sainmhínithe sa Meta.index\_Together\` á bhogadh chuig an: attr: Meta.index.

#### Samhla

- Glacann an abairt `order_by` den: class: ~django.db.Models.Expressions.Window tagairtí teaghráin do réimsí agus athraitheann sé anois.
- Ceadaíonn an socrú nua:setting: CONN\_HEALTH\_CHECKS seiceálacha sláinte a chumasú le haghaidh: ref: naisc bunachar sonraí leanúnacha d'f \<persistent-database-connections\>honn líon na n-iarrataí a theip a laghdú, m.sh. tar éis freastalaí bunachar sonraí a atosú.
- [`QuerySet.bulk_create()`](/ga/5.2/ref/models/querysets/#django.db.models.query.QuerySet.bulk_create) now supports updating fields when a row
  insertion fails uniqueness constraints. This is supported on MariaDB, MySQL,
  PostgreSQL, and SQLite 3.24+.
- [`QuerySet.iterator()`](/ga/5.2/ref/models/querysets/#django.db.models.query.QuerySet.iterator) now supports prefetching related objects as long
  as the `chunk_size` argument is provided. In older versions, no prefetching
  was done.
- [`Q`](/ga/5.2/ref/models/querysets/#django.db.models.Q) objects and querysets can now be combined using
  `^` as the exclusive or (`XOR`) operator. `XOR` is natively supported
  on MariaDB and MySQL. For databases that do not support `XOR`, the query
  will be converted to an equivalent using `AND`, `OR`, and `NOT`.
- Ceadaíonn an tréith nua:ref: Field.non\_DB\_Attrs \<custom-field-non\_db\_attrs\>\`tréithe réimsí a shaincheapadh nach mbíonn tionchar acu ar shainmhíniú colún.
- Ar PostgreSQL, cruthaítear `Autofield`, BigAutoField\`, agus SmallAutofield anois mar cholúin aitheantais seachas colúin sraitheacha le seicheamh.

#### Iarrataí agus Freagraí

- [`HttpResponse.set_cookie()`](/ga/5.2/ref/request-response/#django.http.HttpResponse.set_cookie) now supports [`timedelta`](https://docs.python.org/3/library/datetime.html#datetime.timedelta)
  objects for the `max_age` argument.

#### Slándáil

- Ligeann an socrú nua:setting: SECRET\_KEY\_FALLBACKS liosta luachanna a sholáthar le haghaidh rothlú eochair rúnda.
- Tacaíonn an socrú: SETTING: SECURE\_PROXY\_SSL\_HEADER anois le liosta prótacail scartha le camóg sa luach ceannteidil.

#### Comharthaí

- Seolann na comharthaí: ~django.db.models.signals.pre\_delete agus:data: ~django.db.models.signals.post\_delete origin\` an scriosadh anois.

#### Teimpléid

- Ní theastaíonn an tréith HTML \<script\>\`\`\`\` \`\` a thuilleadh agus an scagaire teimpléad:tfilter: json\_script á timfhilleadh.
- \<TEMPLATES-OPTIONS\>Tá an: class: lódóir teimpléad taisceáilte \<django.template.loaders.cached.Loader\>\`cumasaithe anois i bhforbairt, nuai:socrú: \`DEBUG `True`, agus:socrú: OPTIONS \['luchtóirí'\] ní shonraítear. Féadfaidh tú OPTIONS \['loader'\] a shonrú chun é seo a shárú, más gá.

#### Tástálacha

- Tacaíonn an:class: .DiscoverRunner anois le tástálacha reatha go comhthreomhar ar macOS, Windows, agus aon chórais eile ina bhfuil an modh tosaithe réamhshocraithe: mod: multiprocessing `spawn`.
- Ardaíonn bloc adamhach neadaithe atá marcáilte mar bhuan in:class: django.test.testcase `RuntimeError` anois, mar an gcéanna le lasmuigh de na tástálacha.
- \<django.test.SimpleTestCase.assertFormSetError\>:meth: .simpletestCase.assertForError agus:meth: AssertFormSetError () tacaíonn anois le réad foirme/formset a rith go díreach.

#### URLanna

- Stórálann an tréith nua:attr: .resolvermatch.captured\_kwargs na hargóintí eochairfhocal gabháilte, mar a pháirsítear ón URL.
- Stórálann an tréith nua:attr: .resolvermatch.extra\_kwargs na hargóintí eochairfhocal breise a chuirtear chuig an bhfeidhm amharc.

#### Fóntais

- Tacaíonn `SimpleLazyObject` le hoibríochtaí breise anois.
- [`mark_safe()`](/ga/5.2/ref/utils/#django.utils.safestring.mark_safe) now preserves lazy objects.

#### Bailíochtóirí

- Seiceálann an nua:class: ~django.core.validators.stepvalueValidator an bhfuil luach ina iolrach lárnach de mhéid céim ar leith. Úsáidtear an bailíochtóir nua seo don argóint nua `step_size` a chuirtear le réimsí foirme a léiríonn luachanna uimhriúla.

## Athruithe neamh-chomhoiriúnacha ar ais i 4.1

### API cúltaca bunachar sonraí

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

- Athraítear `BasedatabaseFeatures.has_case_insensitive_like` ó `True` go `False` chun iompar an chuid is mó de bhunachar sonraí a léiriú.
- Baintear databaseintrospection.get\_key\_columns () . Úsáid DatabaseIntrospection.get\_relations () ina ionad.
- Cuirtear ``DatabaseOperations.on_conflict_suffix_sql () `in ionad modh`` databaseOperations.on\_conflict\_suffix\_sql () ```a ghlacann leis na hargóintí ``fields```, on\_conflict\`, update\_fields\`, agus `unique_fields`.
- Cuirtear on\_conflict\` in ionad an argóint `ignore_conflicts` den mhodh databaseOperations.insert\_statement () \`\`a ghlacann le \`\`Django.db.Models.Constants.onConflict\`.
- ```Oibríochtaí bunachar sonraí. Cuirtear ``DatabaseOperations in ionad _convert_field_to_tz ()```. \_convert\_sql\_to\_tz () ```a ghlacann leis na hargóintí ``sql```, params\`, agus `tzname`.
- Tógann roinnt modhanna dáta agus ama ar DatabaseOperations anois argóintí sql\` agus params\` in ionad `field_name` agus filleann 2-tuple ina bhfuil roinnt SQL agus na paraiméadair atá le hidirphóladh isteach sa SQL sin. Tá na sínithe nua seo ag na modhanna athraithe:

  - DatabaseOperations.date\_extract\_sql (lookup\_type, sql, params) \`
  - DatabaseOperations.DateTime\_Extract\_SQL (lookup\_type, sql, params, ainm) \`\`
  - DatabaseOperations.Time\_Extract\_SQL (cuardach\_cineál, sql, params) \`\`
  - DatabaseOperations.date\_trunc\_sql (lookup\_type, sql, params, tZnA=None) \`\`
  - DatabaseOperations.DateTime\_Trunc\_sql (féin, lookup\_type, sql, params, tzname) \`\`
  - DatabaseOperations.time\_trunc\_sql (lookup\_type, sql, params, tzname=None) \`\`
  - DatabaseOperations.DateTime\_Cast\_Date\_SQL (sql, paramaí, ainm) \`\`
  - DatabaseOperations.DateTime\_Cast\_Time\_SQL (sql, paramaí, ainm) \`\`

### [`django.contrib.gis`](/ga/5.2/ref/contrib/gis/#module-django.contrib.gis)

- Baintear tacaíocht do GDAL 2.1.
- Baintear tacaíocht do PostGIS 2.4.

### Tacaíocht titim do PostgreSQL 10

Críochnaíonn tacaíocht suas srutha do PostgreSQL 10 i mí na Samhna 2022. Tacaíonn Django 4.1 le PostgreSQL 11 agus níos airde.

### Tacaíocht titim do MariaDB 10.2

Críochnaíonn tacaíocht suas srutha do MariaDB 10.2 i mí na Bealtaine 2022. Tacaíonn Django 4.1 le MariaDB 10.3 agus níos airde.

### Cuardaigh an liosta athraithe riaracháin a chuimsíonn athruithe caidrimh il

Cuirtear cuardach ar liosta athraithe riaracháin ag úsáid téarmaí cuardaigh iolracha i bhfeidhm anois i nglao amháin ar filter () , seachas i nglaonna filter () seicheamhacha.

Maidir le caidrimh illuachmhar, ciallaíonn sé seo go gcaithfidh sraitheanna ón tsamhail gaolmhar na téarmaí go léir a mheaitseáil Mar shampla, má shocraítear `search_fields` go `['child__name', 'child__age']` agus má chuardaíonn úsáideoir Jamal 17', ní thabharfar sraitheanna tuismitheora ar ais ach amháin má bhíonn caidreamh le leanbh 17 bliain d'aois ainm Jamal, seachas tuismitheoirí a thabhairt ar ais nach bhfuil ach leanbh níos sine ar ainm Jamal.

Féach an t-ábhar: ref: spanning-il-luach-caidrim' le haghaidh tuilleadh plé a dhéanamh ar an difríocht seo. I Django 4.0 agus níos luaithe, lean:: meth: \`~django.contrib.admin.modeladmin.get\_search\_results an dara ceist sampla, ach mar thoradh ar an iompar neamhdhoiciméadaithe seo bhí ceisteanna le comhpháirteanna iomarcacha.

### Athruithe eochra eachtracha a aisiompú do chásanna samhail

\<django.db.models.fields.related.RelatedManager\>D'fhonn an t-iompar a aontú le caidreamh go leor le go leor le haghaidh cásanna samhail neamhshábháilte, ardaíonn eochair eachtrach droim “ValueError” anois agus iad ag glaoch ar: class: bainisteoirí gaolmhara le haghaidh rudaí neamhshábháilte.

### Ilghnéitheach

- Tá bainisteoirí gaolmhara le haghaidh: class: ~django.db.models.foreignKey, :class: ~django.db.models.manyToManyField, agus:class: ~django.contrib.contentTypes.Fields.GenericRelation ar an sampla: Class: ~Django.db.Models.Model lena mbaineann siad anois. \* Cuireadh an t-athrú seo ar ais i Django 4.1.2. \*
- [`DiscoverRunner`](/ga/5.2/topics/testing/advanced/#django.test.runner.DiscoverRunner) now returns a non-zero error code
  for unexpected successes from tests marked with
  [`unittest.expectedFailure()`](https://docs.python.org/3/library/unittest.html#unittest.expectedFailure).
- [`CsrfViewMiddleware`](/ga/5.2/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware) no longer masks the CSRF
  cookie like it does the CSRF token in the DOM.
- [`CsrfViewMiddleware`](/ga/5.2/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware) now uses
  `request.META['CSRF_COOKIE']` for storing the unmasked CSRF secret rather
  than a masked version. This is an undocumented, private API.
- Tugann an: Attr: .ModelAdmin.Actions agus:attr: ~django.contrib.admin.modelAdmin.inlines réamhshocraithe anois le tuple folamh seachas liosta folamh chun sóchán neamhbheartaithe a dhíspreagadh.
- \</topics/forms/media\> \<link\>Níl an tréith `type="text/css"` san áireamh a thuilleadh i gclibeanna \`\` le haghaidh CSS:doc: form media.
- Is imeachtaí JavaScript íon iad imeachtaí JavaScript `formset:added` agus `formset: removed` anois agus níl siad ag brath ar jQuery. Féach:ref: admin-javascript-inline-form-events le haghaidh tuilleadh sonraí faoin athrú.
- Cuirtear `exception` in ionad argóint `exc_info` den fheidhm django.utils.log.log\_response () neamhdhoiciméadaithe.
- Baintear argóint `size` den fheidhm django.views.static.was\_modified\_since () neamhdhoiciméadaithe.
- Úsáideann an UI logáil amach riaracháin iarratais POST anois.
- Cuirtear an modh ```non_form_errors () `in ionad na maoine neamhdhoiciméadaithe ``inlineAdminFormSet.NON_FORM_ERRORS```. Tá sé seo comhsheasmhach le `BaseFormSet`.
- Mar gheall ar: ref: thuas \<templates-4.1\>, tá an lódóir teimpléad taisceáilte cumasaithe anois i bhforbairt. Féadfaidh tú OPTIONS \['loader'\] a shonrú chun é seo a shárú, más gá.
- Cuirtear RedirecturlMixin\` in ionad an mixin `django.contrib.auth.views.successURLAllowedHostsMixin` neamhdhoiciméadaithe.
- [`BaseConstraint`](/ga/5.2/ref/models/constraints/#django.db.models.BaseConstraint) subclasses must implement
  [`validate()`](/ga/5.2/ref/models/constraints/#django.db.models.BaseConstraint.validate) method to allow those
  constraints to be used for validation.
- An ```URLResolver gan doiciméadú. _is_callback () ``, `UrlResolver. Bogtar _callback_strs```, agus ```URLPattern.lookup_str () ``chuig ``django.contrib.admindocs.utils```.
- Athraíonn an modh: Meth: .model.FULL\_CLEAN luach `eisiúint` anois go ```set`. Is fearr freisin luach ``eisithe``` a chur ar aghaidh mar `set` chuig na modhanna: meth: .model.clean\_fields, :meth: .model.full\_clean, :meth: .model.validate\_unique, agus:meth: .model.validate\_restricints.
- Méadaítear an leagan íosta tacaithe de asgiref\` ó 3.4.1 go 3.5.2.
- Ní úsáideann abairtí comhcheangailte an t-iompar earráidí a bhaineann le tuairim a thuilleadh output\_field\` nuair a mheaitseálann cineálacha argóintí. Mar thoradh air sin, féadfaidh réiteach `output_field` le haghaidh feidhmeanna bunachar sonraí agus nathanna comhcheangailte titim anois le cineálacha measctha. Beidh ort an output\_field\` a shocrú go sainráite i gcásanna den sórt sin.
- Ní athraíonn an t-ordú:djaDmin: makemessages comhaid .po a thuilleadh nuair a bhíonn siad cothrom le dáta. I leaganacha níos sine, rinneadh “Pot-Creation-Date” a nuashonrú i gcónaí.

## Gnéithe atá díscríofa i 4.1

### Logáil amach trí GET

\<django.contrib.auth.views.LogoutView\>Tá logáil amach trí iarratais `GET` chuig an:py:class: amharc logála amach ionsuite díluachtaithe. Úsáid iarratais POST ina ionad.

Más mian leat taithí úsáideora nasc HTML a choinneáil, is féidir leat foirm atá stíleáilte a úsáid le feiceáil mar nasc:

```html
<form id="logout-form" method="post" action="{% url 'admin:logout' %}">
  {% csrf_token %}
  <button type="submit">{% translate "Log out" %}</button>
</form>
```

```css
#logout-form {
  display: inline;
}
#logout-form button {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}
```

### Ilghnéitheach

- Tá an comhthéacs do theimpléid innéacs léarscáileáin léarscáileáin de liosta comhréidh URLanna míchuige. Ba chóir teimpléid innéacs léarscáileáin saincheaptha a nuashonrú do na hathróga coigeartaithe: ref: comhthéacs \<sitemap-index-context-variables\>, ag súil le liosta rudaí le ```suíomh ``agus tréithe roghnacha ``lastmod```.
- Tá an socrú idirthréimhseach `CSRF_COOKIE_MASKED` a dhíchur.
- Tá an argóint ainm de:func: django.utils.functional.cached\_property a dhíchur mar nach bhfuil sé gan ghá mar Python 3.6.
- \<django.contrib.postgres.indexes.OpClass\>Tá an argóint opclasses\` de Django.contrib.postgres.Constraints.ExclusionConstraint\` a dhíchur i bhfabhar úsáid:class: opClass () \`in:attr: \`.ExclusionConstraint.Expressions. Chun é a úsáid, ní mór duit `'django.contrib.postgres'` a chur i d':setting: INSTALLED\_APPS.

  Tar éis an t-athrú seo a dhéanamh, ginfidh :djadmin: makemigrations imirce nua le dhá oibríocht: removeConstraint\` agus `AddConstraint`. Ós rud é nach bhfuil aon éifeacht ag an athrú seo ar an scéim bunachar sonraí, is féidir an oibríocht:: class: ~django.db.migrations.Operations.SeparateDatabaseAndState a úsáid chun an stát imirce a nuashonrú gan aon SQL a reáchtáil. Bog na hoibríochtaí a ghintear isteach san argóint `state_operations` de:class: ~django.db.migrations.Operations.SeparateDatabaseandState. Mar shampla:

  ```
  class Migration(migrations.Migration):
      ...

      operations = [
          migrations.SeparateDatabaseAndState(
              database_operations=[],
              state_operations=[
                  migrations.RemoveConstraint(...),
                  migrations.AddConstraint(...),
              ],
          ),
      ]
  ```
- \<django.test.SimpleTestCase.assertFormSetError\>Tá an cumas neamhdhoiciméadaithe chun `Errors=None` a rith chuig:meth: .simpletestCase.assertFormerror agus:meth: assertFormSetError () míchuige. Úsáid errors= \[\] ina ionad.
- Tá `Django.Contrib.Sessions.Serializers.Pickleserializer` a dhíchur mar gheall ar an mbaol go ndéanfar cód iargúlta a fhorghníomhú.
- Tá úsáid ```QuerySet.iterator () ``ar thacar cheisteanna a fhaigheann rudaí gaolmhara réamh-mheasta gan an argóint ``chunk_size``` a sholáthar. I leaganacha níos sine, níor rinneadh aon réamh-aimsiú. Tugann luach a sholáthar do chunk\_size\` le fios go bhfuil an ceist bhreise in aghaidh an phíosa a theastaíonn chun réamh-fháil ag teastáil.
- Tá cásanna samhail neamh-shábháilte a chur chuig scagairí gaolmhara. I Django 5.0, ardófar an eisceacht.
- Cuirtear `created=True` leis an síniú de:meth: .remoteUserBackend.configure\_user. Tá tacaíocht do fho-aicmí RemoteUserBackend\` nach nglacann leis an argóint seo a dhíchur.
- Tá an ailias `django.utils.timezone.utc` to:attr: datetime.timezone.utc díscothaithe. Úsáid: attr: datetime.timezone.utc go díreach.
- Tá réad freagartha agus ainm foirme/foirmeacha a chur chuig ```SimpletestCase.assertFormError () ``agus ``AssertFormSetError ()``` a dhíchur. Úsáid:

  ```
  assertFormError(response.context["form_name"], ...)
  assertFormsetError(response.context["formset_name"], ...)
  ```

  nó pas an réad foirme/formset go díreach ina ionad sin.
- Tá an Django.contrib.gis.admin.openLayersWidget\` neamhdhoiciméadaithe míchuige.
- Tá `Django.Contrib.Auth.Hashers.CryptPasswordHasher` díluachtaithe.
- An cumas chun modhanna `Nulls_first=False` nó `Nulls_last=False` a rith go ```Expression.asc () ``agus ``Expression.desc ()``` modhanna, agus tá an abairt `OrderBy` díscothaithe. Úsáid None ina ionad.
- Tá na teimpléid `” django/forms/default.html “` agus `” django/forms/formsets/default.html “` atá ina seachfhreastalaí do na teimpléid tábla-bhunaithe a dhíchur. Úsáid an teimpléad sonrach ina ionad.
- Athainmnítear an modh logoutView.get\_next\_page () neamhdhoiciméadaithe go \`\`get\_success\_url () \`.

## Gnéithe bainte i 4.1

Tá na gnéithe seo tar éis deireadh a dtimthriall díscrúdaithe bainte amach agus baintear iad i Django 4.1.

Féach: Ref: deprecated-features-3.2 le haghaidh sonraí faoi na hathruithe seo, lena n-áirítear conas úsáid na ngnéithe seo a bhaint.

- Baintear tacaíocht chun rudaí a shannadh nach dtacaíonn le cóipeanna domhain a chruthú le copy.deepcopy () \`\`do thréithe ranga i \`\`TestCase.setupTestData ()\`.
- Baintear tacaíocht chun luach boolean a úsáid in:attr: .basecommand.requires\_system\_checks.
- Baintear an argóint `whitelist` agus `domain_whitelist` tréith `django.core.validators.emailvalidator`.
- Baintear an t-athróg cumraíochta feidhmchláir `default_app_config`.
- Ní ghlaonn ````TransactionTestCase.assertQuerySetEqual () ```repr ()```` a thuilleadh ar tacar ceisteanna i gcomparáid le luachanna sreangáin.
- Baintear an cúltaca `django.core.cache.backends.memcached.memcachedcache`.
- Baintear tacaíocht don fhormáid réamh-Django 3.2 de theachtaireachtaí a úsáideann `Django.contrib.messages.storage.cookie.cookie.cookieStorage`.
