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

*7 Nollaig, 2021*

Fáilte go dtí Django 4.0!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua \<whats-new-4.0\>, chomh maith le roinnt: ref: athruithe neamh-chomhoiriúnacha ar chúl\<backwards-incompatible-4.0\> a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 3.2 nó níos luaithe. \<deprecated-features-4.0\>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.0 le Python 3.8, 3.9, agus 3.10. Molaimid\*\* go hard\*\* agus ní thacaímid go hoifigiúil ach leis an scaoileadh is déanaí de gach sraith.

Is é an tsraith Django 3.2.x an ceann deireanach a thacaíonn le Python 3.6 agus 3.7.

## Cad atá nua i Django 4.0

### Cur i bhfeidhm crios ama réamhshocraithe `zoneinfo`

Is é leabharlann caighdeánach Python's:mod: zoneinfo anois an cur i bhfeidhm crios ama réamhshocraithe i Django.

Is é seo an chéad chéim eile san imirce ó `pytz` a úsáid go húsáid:mod: zoneinfo. Ceadaigh Django 3.2 criosanna ama neamh-pytz a úsáid. Déanann Django 4.0 `zoneinfo` an cur i bhfeidhm réamhshocraithe. Tá tacaíocht do “pytz” díscríofa anois agus bainfear é i Django 5.0.

[`zoneinfo`](https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo) is part of the Python standard library from Python 3.9. The
`backports.zoneinfo` package is automatically installed alongside Django if
you are using Python 3.8.

Ba chóir go mbeadh an t-aistriú chuig zoneinfo\` trédhearcach den chuid is mó. Ní dhéantar tionchar a dhéanamh ar roghnú an chrios ama reatha, cásanna dáta-ama a thiontú go dtí an crios ama reatha i bhfoirmeacha agus teimpléid, chomh maith le hoibríochtaí ar amanna dáta feasacha in UTC.

Mar sin féin, má tá tú ag obair le criosanna ama neamh-UTC, agus ag baint úsáide as na APIs `` `pytz `` normalú () \`\`agus \`\`localize () \`, b'fhéidir leis an socrú: \`TIME\_ZONE, beidh ort iniúchadh a dhéanamh ar do chód, ós rud é nach bhfuil pytz\` agus zoneinfo \<DATABASE-TIME\_ZONE\>\`comhionann go hiomlán.

Chun am a thabhairt d'iniúchadh den sórt sin, ceadaíonn an socrú idirthréimhseach `USE_DEPRECATED_PYTZ` úsáid leanúnach `pytz` le linn an timthriall scaoilte 4.x. Bainfear an suíomh seo i Django 5.0.

Ina theannta sin, is féidir pacáiste [pytz\_deprecation\_shim](https://pytz-deprecation-shim.readthedocs.io/en/latest/index.html), a chruthaigh an t-údar `zoneinfo`, a úsáid chun cabhrú leis an imirce ó pytz\`. Soláthraíonn an pacáiste seo shims chun cabhrú leat `pytz` a bhaint go sábháilte, agus tá [treoir imirce](https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html) mionsonraithe aige a thaispeánann conas bogadh chuig na APIs nua `zoneinfo`.

Moltar úsáid a bhaint as [pytz\_deprecation\_shim](https://pytz-deprecation-shim.readthedocs.io/en/latest/index.html) agus an socrú idirthréimhseach `USE_DEPRECATED_PYTZ` má theastaíonn cosán nuashonraithe de réir a chéile uait.

### Srianta uathúla feidhmiúla

\<django.db.models.UniqueConstraint\>Cuireann an argóint seasaimh nua:attr: \*expressions \<django.db.models.UniqueConstraint.expressions\>\`de:class: \`UniqueConstraint () ar chumas srianta feidhmiúla uathúla a chruthú ar nathanna agus ar fheidhmeanna bunachar sonraí. Mar shampla:

```
from django.db import models
from django.db.models import UniqueConstraint
from django.db.models.functions import Lower

class MyModel(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

    class Meta:
        constraints = [
            UniqueConstraint(
                Lower("first_name"),
                Lower("last_name").desc(),
                name="first_last_name_unique",
            ),
        ]
```

\<django.db.models.Options.constraints\>Cuirtear srianta uathúla feidhmiúla le samhlacha ag baint úsáide as an rogha: attr: Meta.Constraints .

### Hasher pasfhocal `scrypt`

Tá an nua:ref: scrypt password hasher \<scrypt-usage\>\`níos sábháilte agus moltar thar PBKDF2. Mar sin féin, ní hé an réamhshocrú é mar éilíonn OpenSSL 1.1+ agus níos mó cuimhne uaidh.

### Cúltaca taisce Redis

Soláthraíonn an cúltaca taisce nua Django.Core.Cache.Backends.Redis.RedisCache tacaíocht ionsuite do chaching le Redis. :pypi: redis-py \<redis\>\`3.0.0 nó níos airde teastaíonn. \<redis\>Le haghaidh tuilleadh sonraí, féach an:ref: doiciméadú ar chaching le Redis i Django .

### Rindreáil foirm bunaithe ar theim

[`Forms`](/ga/6.0/ref/forms/api/#django.forms.Form), [Formsets](/ga/6.0/topics/forms/formsets/),
and [`ErrorList`](/ga/6.0/ref/forms/api/#django.forms.ErrorList) are now rendered using the template engine
to enhance customization. See the new [`render()`](/ga/6.0/ref/forms/api/#django.forms.Form.render),
[`get_context()`](/ga/6.0/ref/forms/api/#django.forms.Form.get_context), and
[`template_name`](/ga/6.0/ref/forms/api/#django.forms.Form.template_name) for `Form` and
[formset rendering](/ga/6.0/topics/forms/formsets/#formset-rendering) for `Formset`.

### Mionghnéithe

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

- Tá bloc nua `header` sa teimpléad admin/base.html\` anois ina bhfuil ceannteideal an láithreáin riaracháin.
- Ligeann an modh nua:meth: .modeladmin.get\_formset\_kwargs na hargóintí eochairfhocal a chuirtear chuig tógálaí foirmshraith a shaincheapadh.
- Tá barra uirlisí scagaire tapa ag an barra taobh nascleanúna anois.
- Cuirtear an t-athróg comhthéacs nua `model` ina bhfuil an rang samhail do gach samhail leis an modh:meth: .adminsite.each\_context.
- Ceadaíonn an tréith nua:attr: .modeladmin.search\_help\_text téacs tuairisciúil a shonrú don bhosca cuardaigh.
- Tagann an tréith: attr: .inlineModelAdmin.verbose\_name\_plural anois ar thréith an:attr: .inlineModelAdmin.verbose\_name \+ `s'`.
- tá jQuery uasghrádaithe ó leagan 3.5.1 go 3.6.0.

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

- Ceadaíonn an admindocs socruithe esoteric anois áit nach sreang é: setting: ROOT\_URLCONF.
- Taispeánann an chuid samhail den admindocs\` airíonna taispeáilte anois.

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

- Méadaítear an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2 ó 260,000 go 320,000.
- Ceadaíonn an modh nua:attr: LoginView.next\_page \<django.contrib.auth.views.LoginView.next\_page\>\`agus:meth: \`~django.contrib.auth.views.loginview.get\_default\_redirect\_url an t-atreorú a shaincheapadh tar éis logáil isteach.

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

- Tacaíocht bhreise do SpatiaLite 5.
- [`GDALRaster`](/ga/6.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster) now allows creating rasters in
  any GDAL virtual filesystem.
- Ceadaíonn an rang nua:class: ~django.contrib.gis.admin.gismodelAdmin an giuirléid a úsáidtear le haghaidh `GeometryField` a shaincheapadh. Spreagtar é seo in ionad `GeomodelAdmin` agus `OsmGeoAdmin` díluasaithe.

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

- Tacaíonn cúltaca PostgreSQL anois le nascadh le hainm seirbhíse. Féach: ref: postgresql-connection-settings le haghaidh tuilleadh sonraí.
- Ligeann an oibríocht nua:class: ~django.contrib.postgres.operations.addConstraintNotValid srianta seiceála a chruthú ar PostgreSQL gan a fhíorú go sásaíonn gach sraitheanna atá ann cheana an srian nua.
- Ceadaíonn an oibríocht nua:class: ~django.contrib.postgres.operations.validateConstraint srianta seiceála a cruthaíodh a bhailíochtú ag baint úsáid:class: ~django.contrib.postgres.operations.addConstraintNotValid ar PostgreSQL.
- Ceadaíonn an léiriú nua:class: ArraySubQuery () \<django.contrib.postgres.expressions.ArraySubquery\>\`fo-cheisteanna a úsáid chun liostaí luachanna a thógáil ar PostgreSQL.
- \<django.contrib.postgres.search.TrigramWordDistance\>\<django.contrib.postgres.search.TrigramWordSimilarity\>Ceadaíonn an cuardach nua:lookup: trigram\_word\_similar, agus an:class: trigramwordDistance () \`agus:class: \`trigramwordSimilarity () cosúlacht focal trigram a úsáid.

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

- [`ManifestStaticFilesStorage`](/ga/6.0/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage) now
  replaces paths to JavaScript source map references with their hashed
  counterparts.
- Ceadaíonn an argóint nua `manifest_storage` de:class: ~django.contrib.staticFiles.Storage.ManifestFilesMixin agus:class: ~django.contrib.staticFiles.Storage.ManifestStaticFilesStorage stóráil an chomhad léirithe a shaincheapadh.

#### Cache

- Tosaíonn an API async nua do `django.core.cache.backends.base.baseCache` an próiseas chun cúltaca taisce a dhéanamh ag comhoiriúnach async-chomhoiriúnach. Tá ainmneacha réamhshocraithe `a` ag na modhanna nua async go léir, m.sh. ```aadd () ``, ``aget ()```, ```aset () ``, ``aget_or_set ()```, nó adelete\_many () .

  Ag dul ar aghaidh, úsáidfear an réimír `a` le haghaidh leaganacha async modhanna go ginearálta.

#### CSRF

- Téann cosaint CSRF i gcomhairle anois leis an gceannteideal Bunaidh , má tá sé ann. Chun é seo a éascú, \<csrf-trusted-origins-changes-4.0\>teastaíonn :ref: roinnt athruithe \`ar an socrú:setting: \`CSRF\_TRUSTED\_ORIGINS.

#### Foirmeacha

- [`ModelChoiceField`](/ga/6.0/ref/forms/fields/#django.forms.ModelChoiceField) now includes the provided value in
  the `params` argument of a raised
  [`ValidationError`](/ga/6.0/ref/exceptions/#django.core.exceptions.ValidationError) for the `invalid_choice`
  error message. This allows custom error messages to use the `%(value)s`
  placeholder.
- [`BaseFormSet`](/ga/6.0/topics/forms/formsets/#django.forms.formsets.BaseFormSet) now renders non-form errors with
  an additional class of `nonform` to help distinguish them from
  form-specific errors.
- [`BaseFormSet`](/ga/6.0/topics/forms/formsets/#django.forms.formsets.BaseFormSet) now allows customizing the widget
  used when deleting forms via
  [`can_delete`](/ga/6.0/topics/forms/formsets/#django.forms.formsets.BaseFormSet.can_delete) by setting the
  [`deletion_widget`](/ga/6.0/topics/forms/formsets/#django.forms.formsets.BaseFormSet.deletion_widget) attribute or
  overriding [`get_deletion_widget()`](/ga/6.0/topics/forms/formsets/#django.forms.formsets.BaseFormSet.get_deletion_widget)
  method.

#### Idirnáisiúnú

- Cuireadh tacaíocht agus aistriúcháin leis an teanga Mhalais.

#### Tuairimí cineálacha

- [`DeleteView`](/ga/6.0/ref/class-based-views/generic-editing/#django.views.generic.edit.DeleteView) now uses
  [`FormMixin`](/ga/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin), allowing you to provide a
  [`Form`](/ga/6.0/ref/forms/api/#django.forms.Form) subclass, with a checkbox for example, to confirm
  deletion. In addition, this allows `DeleteView` to function with
  [`django.contrib.messages.views.SuccessMessageMixin`](/ga/6.0/ref/contrib/messages/#django.contrib.messages.views.SuccessMessageMixin).

  De réir `FormMixin`, déantar scriosadh réad le haghaidh iarratais POST a láimhseáil i ```form_valid () ``. Ba chóir loighic scriosta saincheaptha i láimhseálaithe ``delete () ``a aistriú go ``form_valid ()```, nó modh cúntóra roinnte, de réir mar is gá.

#### Logáil

- Cuirtear ainm an bhunachar sonraí a úsáidtear i nglao SQL anois mar chomhthéacs breise in éineacht le gach teachtaireacht chuig an logger: ref: django-db-logger.

#### Orduithe Bainistíochta

- Tacaíonn an t-ordú bainistíochta: DJadmin: runserver anois leis an rogha:: --skip-checks.
- Ar PostgreSQL, tacaíonn: djadmin: dbshell anois le comhad pasfhocal a shonrú.
- The [`shell`](/ga/6.0/ref/django-admin/#django-admin-shell) command now respects [`sys.__interactivehook__`](https://docs.python.org/3/library/sys.html#sys.__interactivehook__)
  at startup. This allows loading shell history between interactive sessions.
  As a consequence, `readline` is no longer loaded if running in *isolated*
  mode.
- \<django.core.management.BaseCommand.suppressed\_base\_arguments\>Ceadaíonn an tréith nua:attr: BaseCommand.suppressed\_base\_arguments roghanna ordaithe réamhshocraithe gan tacaíocht a chur faoi chois san aschur cabhrach.
- Ceadaíonn na roghanna nua:option: startapp --exclude agus:option: startproject --exclude eolairí a eisiamh ón teimpléad.

#### Samhla

- New:Meth: QuerySet.contents (obj) \<.querySet.contains\> filleann modh cibé an bhfuil an réad a thugtar sa tacar ceisteanna. Déanann sé seo iarracht an cheist a dhéanamh ar an mbealach is simplí agus is gasta is féidir.
- Ligeann an argóint nua `cruinne` den fheidhm bhunachar sonraí: Round () \<django.db.models.functions.Round\>\`líon na n-áiteanna deachúil a shonrú tar éis a shonrú.
- : meth: .queryset.bulk\_create socraíonn anois an príomh-eochair ar rudaí agus SQLite 3.35+ á úsáid agat.
- [`DurationField`](/ga/6.0/ref/models/fields/#django.db.models.DurationField) now supports multiplying and
  dividing by scalar values on SQLite.
- [`QuerySet.bulk_update()`](/ga/6.0/ref/models/querysets/#django.db.models.query.QuerySet.bulk_update) now returns the number of objects updated.
- Ligeann an tréith nua:attr: .expression.empty\_result\_set\_value luach a shonrú le filleadh nuair a úsáidtear an fheidhm thar tacar torthaí folamh.
- The `skip_locked` argument of [`QuerySet.select_for_update()`](/ga/6.0/ref/models/querysets/#django.db.models.query.QuerySet.select_for_update) is now
  allowed on MariaDB 10.6+.
- [`Lookup`](/ga/6.0/ref/models/lookups/#django.db.models.Lookup) expressions may now be used in `QuerySet`
  annotations, aggregations, and directly in filters.
- Ligeann an argóint nua:ref: réamhshocraithe' \<aggregate-default\>maidir le comhiomláin ionsuite luach a chur ar ais a shonrú nuair nach bhfuil aon iontrálacha sa tacar fiosrúcháin (nó sa ghrúpáil), seachas \`\`None\`.

#### Iarrataí agus Freagraí

- \<cross-origin-opener-policy\>Cuireann an:class: ~django.middleware.security.securityMiddleware anois an ceannteideal: Cross-Origin Opener Policy \`le luach \`'same-origin'\`\` chun cosc a chur ar popups tras-bhunús an comhthéacs brabhsála céanna a roinnt. Is féidir leat an ceannteideal seo a chosc ó chur leis trí:setting: SECURE\_CROSS\_ORIGIN\_OPENER\_POLICY a shocrú go `None`.

#### Comharthaí

- The new `stdout` argument for [`pre_migrate()`](/ga/6.0/ref/signals/#django.db.models.signals.pre_migrate)
  and [`post_migrate()`](/ga/6.0/ref/signals/#django.db.models.signals.post_migrate) signals allows redirecting
  output to a stream-like object. It should be preferred over
  [`sys.stdout`](https://docs.python.org/3/library/sys.html#sys.stdout) and [`print()`](https://docs.python.org/3/library/functions.html#print) when emitting verbose output in
  order to allow proper capture when testing.

#### Teimpléid

- [`floatformat`](/ga/6.0/ref/templates/builtins/#std-templatefilter-floatformat) template filter now allows using the `u` suffix to
  force disabling localization.

#### Tástálacha

- \<test-case-serialized-rollback\>Cinneann an argóint nua `serialized_aliases` de:func: django.test.utils.setup\_databases cé na bunachair sonraí tástála ainmneacha DATABASES ba chóir go mbeadh a stát sraitheach chun an ghné: ref: serialized\_rollback a úsáid a cheadú.
- Tacaíonn an rogha: rogha: test --buffer le tástálacha comhthreomhara anois.
- The new `logger` argument to [`DiscoverRunner`](/ga/6.0/topics/testing/advanced/#django.test.runner.DiscoverRunner)
  allows a Python [logger](https://docs.python.org/3/library/logging.html#logger) to be used for logging.
- Soláthraíonn an modh nua:meth: .DiscoverRunner.log bealach chun teachtaireachtaí a úsáideann an `DiscoverRunner.logger` a logáil, nó a phriontáil chuig an gconsól mura bhfuil sé socraithe.
- [`DiscoverRunner`](/ga/6.0/topics/testing/advanced/#django.test.runner.DiscoverRunner) can now execute tests in a random
  order using the [`test --shuffle`](/ga/6.0/ref/django-admin/#cmdoption-test-shuffle) option.
- Tacaíonn an rogha: 'test --parallel\` anois leis an luach `auto` chun próiseas tástála amháin a reáchtáil do gach croí próiseálaí.
- [`TestCase.captureOnCommitCallbacks()`](/ga/6.0/topics/testing/tools/#django.test.TestCase.captureOnCommitCallbacks) now captures new callbacks added
  while executing [`transaction.on_commit()`](/ga/6.0/topics/db/transactions/#django.db.transaction.on_commit) callbacks.

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

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

- Glacann modhanna ```databaseOperations.year_lookup_bouns_for_date_field () ``agus ``year_lookup_bouns_for_datetime_field ()``` an argóint roghnach `iso_year` d'fhonn tacú le teorainneacha do bhlianta uimhrithe seachtaine ISO-8601.
- An dara argóint de ```DatabaseSchemaEditor. Is é modhanna _unique_sql () ``agus ``_create_unique_sql ()``` anois `fields` in ionad `columns`.

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

- Baintear tacaíocht do PostGIS 2.3.
- Baintear tacaíocht do GDAL 2.0 agus GEOS 3.5.

### Tacaíocht titim do PostgreSQL 9.6

Críochnaíonn tacaíocht suas srutha do PostgreSQL 9.6 i mí na Samhna 2021. Tacaíonn Django 4.0 le PostgreSQL 10 agus níos airde.

Chomh maith leis sin, méadaítear an leagan íosta tacaithe de psycopg2 ó 2.5.4 go 2.8.4, mar is é psycopg2\` 2.8.4 an chéad eisiúint chun tacú le Python 3.8.

### Tacaíocht titim do Oracle 12.2 agus 18c

Críochnaíonn tacaíocht suas srutha do Oracle 12.2 i mí an Mhárta 2022 agus do Oracle 18c críochnaíonn sé i mí an Mheithimh 2021 Tacófar le Django 3.2 go dtí Aibreán 2024. Tacaíonn Django 4.0 go hoifigiúil le Oracle 19c.

### Athruithe `CSRF_TRUSTED_ORIGINS`

#### Athrú formáid

Ní mór an scéim a bheith san áireamh ar luachanna sa socrúit:setting: CSRF\_TRUSTED\_ORIGINS (m.sh. `http: //'` nó `` `https: //' ``) in ionad an t-ainm óstach amháin.

Chomh maith leis sin, caithfidh na luachanna a thosaigh le ponc réilte a áireamh anois roimh an ponc. Mar shampla, athraigh `'.example.com'` go `https://*.example.com '`.

Aimsíonn seiceáil chórais aon athruithe riachtanacha.

#### B'fhéidir go mbeadh gá anois é a chumrú

De réir mar a chuireann cosaint CSRF i gcomhairle anois leis an gceannteideal Origin\`, b'fhéidir go mbeidh ort socrú: CSRF\_TRUSTED\_ORIGINS, go háirithe má cheadaíonn tú iarratais ó fho-fearainn trí shocraí:setting: CSRF\_COOKIE\_DOMAIN (nó:setting: SESSION\_COOKIE\_DOMAIN cumasaithe) luach ag tosú le ponc.

### Ní shocraíonn `SecurityMiddleware` ceannteideal X-XSS-Protection\` a thuilleadh

Ní shocraíonn an:class: ~django.middleware.security.securityMiddleware an ceannteideal `X-XSS-Protection` a thuilleadh má tá an socrú `SECURE_BROWSER_XSS_FILTER` `True`. Baintear an suíomh.

Ní thugann mórchuid na mbrabhsálaithe nua-aimseartha an ceannteideal HTTP X-XSS-Protection\`. Is féidir leat Containt-Security [Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) a úsáid gan scripteanna 'unsafe-inline'\` a cheadú ina ionad.

Más mian leat tacú le brabhsálaithe oidhreachta agus an ceannteideal a shocrú, bain úsáid as an líne seo i lár saincheaptha:

```
response.headers.setdefault("X-XSS-Protection", "1; mode=block")
```

### Athruithe uathraitheoir imirce

Úsáideann an t-uathbhreithnitheoir imirce stáit samhail anois in ionad ranganna samhail. Chomh maith leis sin, ní shonraíonn oibríochtaí imirce do réimsí ForeignKey agus ManyTomanyField\` tréithe a thuilleadh nár cuireadh chuig na réimsí le linn an tionscnaimh.

Mar fho-éifeacht, d'fhéadfadh go mbeadh oibríochtaí “Alterfield” gan aon ghiniúint ag rith ```makemigrations` do réimsí ``ManyTomanyField` agus ``ForeignKey``` i gcásanna áirithe.

### Athruithe `DeleteView`

[`DeleteView`](/ga/6.0/ref/class-based-views/generic-editing/#django.views.generic.edit.DeleteView) now uses
[`FormMixin`](/ga/6.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin) to handle POST requests. As a
consequence, any custom deletion logic in `delete()` handlers should be
moved to `form_valid()`, or a shared helper method, if required.

### Athraíonn scéim ainmnithe tábla agus colún ar Oracle

D'athraigh Django 4.0 an scéim ainmniúcháin tábla agus colún ar Oracle go neamhthuiscint. Cuireann sé seo earráidí le haghaidh samhlacha agus réimsí le hainmneacha níos faide ná 30 carachtar. Ar an drochuair, tá gá le roinnt táblaí agus colún Oracle a athainmniú Úsáid an script uasghrádaithe in:ticket: 33789 chun ráitis `RENAME` \<33789 #comment:15\> a ghiniúint chun an scéim ainmniúcháin a athrú.

### Ilghnéitheach

- Baintear tacaíocht do CX\_Oracle \<7.0.
- Chun a cheadú freastal ar shuíomh Django ar fho-chosán gan luach: setting: STATIC\_URL a athrú, baintear an tosaigh den socrú sin (anois `static/'`) sa teimpléad réamhshocraithe: djadmin: startproject.
- Níl an modh: Class: ~django.contrib.admin.admin.adminSite don amharc riaracháin `index` maisithe le `never_cache` a thuilleadh nuair a bhíonn rochtain air go díreach, seachas tríd an modh Adminsite.urls\` molta, nó Adminsite.get\_URLs () .
- Ardaíonn oibríochtaí gan tacaíocht ar shraith fiosrúcháin slisnaithe `TypeError` anois in ionad `AssertionError`.
- Athainmnítear an fheidhm django.test.runner.reorder\_suite () neamhdhoiciméadaithe go \`\`reorder\_tests () \`. Glacann sé anois le tástálacha in-athraithe seachas sraith tástála, agus filleann sé athraitheoir tástálacha ar ais.
- Ag glaoch ar `FilesystemStorage.delete ()` le ainm \`\`folamh, ardaíonn \`\`ValueError\` in ionad `AssertionError`.
- Ag glaoch ar ```EmailMultiAlternatives.Attach_Alternative () ``nó ``EmailMessage.Attach ()``` le hargóintí `content` nó mimetype\` neamhbhailí ardaíonn `ValueError` in ionad `AssertionError`.
- [`assertHTMLEqual()`](/ga/6.0/topics/testing/tools/#django.test.SimpleTestCase.assertHTMLEqual) no longer considers a
  non-boolean attribute without a value equal to an attribute with the same
  name and value.
- Meaitseálann tástálacha nach dteipfidh orthu a luchtú, mar shampla mar gheall ar earráidí comhréireachta, anois i gcónaí agus iad á n-úsáid:option: test --tag.
- Athainmnítear an fheidhm ```django.contrib.admin.utils.lookup_needs_different () ``gan doiciméadú go ``lookup_spawns_duplicates ()```.
- Baintear an modh HttpRequest.get\_raw\_uri () neamhdhoiciméadaithe. D'fhéadfadh an modh: Meth: .httpRequest.build\_Absolute\_URI a bheith ina rogha eile oiriúnach.
- Athainmnítear an argóint `object` de mhodhanna ```ModelAdmin.log_Addition () ``, `log_change ()```, agus ```log_delete () ``neamhdhoiciméadaithe go ``obj```.
- [`RssFeed`](/ga/6.0/ref/utils/#django.utils.feedgenerator.RssFeed),
  [`Atom1Feed`](/ga/6.0/ref/utils/#django.utils.feedgenerator.Atom1Feed), and their subclasses now emit
  elements with no content as self-closing tags.
- Ní chaitheann ```NodeList.render () ``aschur modh ``render ()``` do nóid aonair chuig teaghrán a thuilleadh. Ba chóir go gcuirfeadh Node.render () teaghrán a thabhairt ar ais i gcónaí mar a dhoiciméadaithe.
- Baintear maoin where\_class\` `django.db.models.sql.query.query` agus an argóint where\_class\` leis an modh príobháideach ```get_extra_restriction` () ``de `ForeignObject``` agus\`\` ForeignoBject\`\`. Más gá, cuir tús le `Django.db.Models.sql.where.whereNode` ina ionad.
- Cuirtear dhá argóint seasaimh filter\_lhs\` agus filter\_rhs\` in ionad argóint filter\_clause\` den mhodh Query.add\_filter () neamhdhoiciméadaithe.
- [`CsrfViewMiddleware`](/ga/6.0/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware) now uses
  `request.META['CSRF_COOKIE_NEEDS_UPDATE']` in place of
  `request.META['CSRF_COOKIE_USED']`, `request.csrf_cookie_needs_reset`,
  and `response.csrf_cookie_set` to track whether the CSRF cookie should be
  sent. This is an undocumented, private API.
- Bogtar an tairiseach `TRANSLATOR_COMMENT_MARK` gan doiciméadú ó `django.template.base` go `django.utils.translation.template`.
- An argóint `real_apps` den django.db.migrations.state.projectState gan doiciméadú. Caithfidh an modh \_\_init\_\_ () a bheith ina tacar anois má sholáthraítear é.
- \<div\>:class: ~Django.Forms.RadioSelect agus:class: ~django.forms.CheckBoxSelectMultiple a rinneadh anois i gclibeanna \`\` ionas go bhfógraíonn léitheoirí scáileáin iad níos gonta. Má theastaíonn an t-iompar roimhe seo uait, :ref: athsháraigh an teimpléad giuirléid \<overriding-built-in-widget-templates\>\`leis an teimpléad cuí ó Django 3.2.
- Ní bhraitheann an scagaire teimpléad: TFilter: floatformat a thuilleadh ar an socrú `USE_L10N` agus filleann sé aschur logánaithe i gcónaí. Úsáid an iarmhír `u` chun logánú a dhíchumasú.
- Athraítear luach réamhshocraithe an socrú `USE_L10N` go `True`. Féach an ranna:ref: Logánú \<use\_l10n\_deprecation\>\`thuas le haghaidh tuilleadh sonraí.
- Mar chuid den: ref: bogadh go zoneinfo \<whats-new-4.0\>, athraítear `django.utils.timezone.utc` go alias:attr: datetime.timezone.utc.
- Méadaítear an leagan íosta tacaithe de asgiref\` ó 3.3.2 go 3.4.1.

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

### Úsáid criosanna ama `pytz`

Mar chuid den: ref: bogadh go zoneinfo \<whats-new-4.0\>, tá úsáid criosanna ama `pytz` a dhíchur.

Dá réir sin, déantar na hargóintí is\_dst\` leis na nithe seo a leanas a dhíchur freisin:

- [`django.db.models.query.QuerySet.datetimes()`](/ga/6.0/ref/models/querysets/#django.db.models.query.QuerySet.datetimes)
- [`django.db.models.functions.Trunc()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.Trunc)
- [`django.db.models.functions.TruncSecond()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncSecond)
- [`django.db.models.functions.TruncMinute()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncMinute)
- [`django.db.models.functions.TruncHour()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncHour)
- [`django.db.models.functions.TruncDay()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncDay)
- [`django.db.models.functions.TruncWeek()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncWeek)
- [`django.db.models.functions.TruncMonth()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncMonth)
- [`django.db.models.functions.TruncQuarter()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncQuarter)
- [`django.db.models.functions.TruncYear()`](/ga/6.0/ref/models/database-functions/#django.db.models.functions.TruncYear)
- [`django.utils.timezone.make_aware()`](/ga/6.0/ref/utils/#django.utils.timezone.make_aware)

Bainfear tacaíocht le húsáid `pytz` i Django 5.0.

### Tacaíocht crios ama

D'fhonn dea-chleachtas a leanúint, athróidh luach réamhshocraithe an socruithe:: USE\_TZ ó `False` go True\`, agus cumasófar tacaíocht crios ama de réir réamhshocraithe, i Django 5.0.

\<startproject\>\<USE\_TZ\>Tabhair faoi deara go gcuimsíonn an comhad réamhshocraithe: file: settings.py a chruthaigh: djadmin: django-admin startproject \`: socrú: \`USE\_TZ = Fíor ó Django 1.4.

Is féidir leat `USE_TZ` a shocrú go `False` i do shocruithe tionscadail roimhe sin chun diúltú.

### Logánú

D'fhonn dea-chleachtas a leanúint, athraítear luach réamhshocraithe an socrú `USE_L10N` ó False\` go True\`.

Ina theannta sin tá `USE_L10N` a dhíchur amhail an eisiúint seo. Ag tosú le Django 5.0, de réir réamhshocraithe, déanfar aon dáta nó uimhir a thaispeánann Django logánach.

Beidh Django onóir fós ar an gclibe:ttag: {% localize%}\<localize\> agus na scagairí:tfilter: localize/:tfilter: unlocalize fós.

### Ilghnéitheach

- \<test-case-serialized-rollback\>Tá socrú tástála `SERIALIZE` a dhíchur mar is féidir é a thabhairt amach ón: attr: ~django.test.testcase.databases leis an rogha: ref: serialized\_rollback cumasaithe.
- Tá an modúl `django.utils.baseconv` neamhdhoiciméadaithe míchuige.
- Tá an modúl `django.utils.datetime_safe` neamhdhoiciméadaithe míchuige.
- Athróidh an prótacal réamhshocraithe léarscáileanna láithreáin a tógadh lasmuigh de chomhthéacs iarratais ó `` `http' `` go `https'` i Django 5.0.
- Tá an argóint `extra_tests` le haghaidh: meth: .discoverRunner.build\_suite agus:meth: .discoverRunner.run\_tests a dhíchur.
- Fillfidh comhiomlánaithe `` `None `` nuair nach bhfuil aon sraitheanna ann in ionad ``Class: `~django.contrib.postgres.aggregates.jsonbagg`, ag:class: `~django.contrib.postgres.aggregates.stringagg` []``, `[]`, agus ````` ````faoi seach i Django 5.0. Má theastaíonn an t-iompar roimhe seo uait, socraigh go sainráite ``réamhshocraithe ````` go ```Luach ([]) ``, `Luach ('[]')```, nó Luach (“) .
- Tá na ranganna `Django.contrib.gis.admin.geomodelAdmin` agus `OsmGeoAdmin` a dhíchur. Úsáid: aicme: ~django.contrib.admin.modelAdmin agus:class: ~django.contrib.gis.admin.gismodelAdmin ina ionad.
- Ós rud é go n-úsáideann rindreáil foirme an t-inneall teimpléad anois, tá an BaseForm neamhchá \_html\_output () tá modh cúntóra as lasmuigh.
- Tá an cumas chun `str` a thabhairt ar ais ó `ErrorList` agus `ErrorDict` a chur ar ais as `ErrorDict`. Táthar ag súil go bhfillfidh na modhanna seo `Safestring`.

## Gnéithe bainte i 4.0

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

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

- Baintear ```django.utils.http.urlquote () ``, `urlquote_plus ()```, urlunquote () \`, agus `urlunquote_plus ()`.
- Baintear ```django.utils.encoding.force_text () ``agus ``smart_text ()```.
- Baintear ```django.utils.translation.ugettext () ``, ``ugettext_lazy ()```, ugettext\_noop () \`, `ungettext ()`, agus ungettext\_lazy () .
- ```django.views.i18n.set_language () ``ní shocraíonn an teanga úsáideora i ``request.session``` (eochair `_language`).
- Tá `Alias=None` ag teastáil i síniú fo-aicmí django.db.models.expression.get\_group\_by\_cols () .
- Baintear django.utils.text.unescape\_entity () .
- Baintear django.utils.http.is\_safe\_url () .

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

- Baintear an socrú `PASSWORD_RESET_TIMEOUT_DAYS`.
- Ní cheadaíonn an cuardach: lookup: isnull luachanna neamh-boolean a úsáid mar an taobh deise.
- Baintear an rang eisceachta Django.db.Models.Query\_Utils.InvalidQuery .
- Baintear an pointe iontrála `django-admin.py`.
- Baintear an modh HttpRequest.is\_ajax () \`.
- Baintear tacaíocht don fhormáid ionchódú réamh-DJango 3.1 de luachanna fianáin a úsáideann `Django.contrib.messages.storage.cookie.cookie.cookieStorage`.
- Baintear tacaíocht do na comharthaí athshocraithe pasfhocal réamh-DJango 3.1 ar an suíomh riaracháin (a úsáideann algartam hashing SHA-1).
- Baintear tacaíocht don fhormáid ionchódú réamh-Django 3.1 de na seisiúin.
- Baintear tacaíocht do na sínithe réamh-DJango 3.1 `Django.Core.Signing.Signer` (ionchódaithe leis an algartam SHA-1).
- Baintear tacaíocht do na sínithe réamh-DJango 3.1 ```django.core.signing.dumps () ``(ionchódaithe leis an algartam SHA-1) i ``django.core.signing.loads ()```.
- Baintear tacaíocht do na seisiúin úsáideora réamh-Django 3.1 (a úsáideann algartam SHA-1).
- An argóint `get_response` do django.utils.deprecation.middlewaremixin. Tá \_\_init\_\_ () \`\`ag teastáil agus ní ghlacann sé le \`\`\`None\`.
- Baintear an argóint providing\_args\` le haghaidh `Django.Dispatch.Signal`.
- Tá an argóint `length` le haghaidh django.utils.crypto.get\_random\_string () ag teastáil.
- Baintear an teachtaireacht `liosta` le haghaidh `ModelMultiplechoicefield`.
- Baintear tacaíocht chun ainmneacha colún amh a chur chuig QuerySet.order\_by () .
- Baintear an réimse samhail `Nullbooleanfield`, ach amháin le haghaidh tacaíochta in imirce stairiúla.
- Baintear django.conf.urls.url () .
- Baintear an réimse samhail `Django.contrib.postgres.fields.jsonfield`, seachas tacaíocht in imirce stairiúla.
- Baintear `Django.contrib.postgres.fields.jsonb.keytransform` agus `Django.contrib.postgres.fields.jsonb.keytextTransform`.
- Baintear `Django.contrib.postgres.forms.jsonfield`.
- Baintear na clibeanna teimpléad `{% ifequal%}` agus `{% ifnotequal%}`.
- Baintear an suíomh idirthréimhseach `DEFAULT_HASHING_ALGORITHM`.
