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

*4 Lúnasa, 2020*

Fáilte go dtí Django 3.1!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua \<whats-new-3.1\>, chomh maith le roinnt: ref: athruithe neamh-chomhoiriúnacha ar chúl\<backwards-incompatible-3.1\> a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 3.0 nó níos luaithe. \<deprecated-features-3.1\>Chuireamar: Ref: thit roinnt \<removed-features-3.1\>gnéithe \`a bhfuil deireadh a dtimthriall díghníomhaíochta bainte amach acu, agus chuireamaire:ref: \`thosaigh muid ar an bpróiseas díghníomhaíochta 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 3.1 le Python 3.6, 3.7, 3.8, agus 3.9 (amhail 3.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 3.1

### Tuairimí asincrónacha agus tacaíocht lár-earraí

Tacaíonn Django anois le cosán iarratais go hiomlán asincrónach, lena n-áirítear:

- \<async-views\>:ref: Tuairimí asincrónacha \`
- \<async-middleware\>:ref: Meán-earraí asincrónach \`
- \<async-tests\>:ref: Tástálacha asincrónacha agus cliant tástála \`

Chun tús a chur le tuairimí async, ní mór duit radharc a dhearbhú ag baint úsáide as `async def`:

```
async def my_view(request):
    await asyncio.sleep(0.5)
    return HttpResponse("Hello, async world!")
```

Tacaítear le gach gné asincrónach cibé an bhfuil tú ag rith faoi mhodh WSGI nó ASGI. Mar sin féin, beidh pionóis feidhmíochta ann ag baint úsáide as cód async i mód WSGI. Is féidir leat tuilleadh a léamh faoi na sonraí in:doc: /topics/async doiciméadú.

Tá saor ort tuairimí async agus sync, middleware, agus tástálacha a mheascadh an oiread agus is mian leat. Cinnteoidh Django go mbeidh an comhthéacs forghníomhaithe ceart agat i gcónaí. Táimid ag súil go gcoinneoidh formhór na dtionscadail formhór a gcuid tuairimí sioncrónach, agus níl ach cúpla rogha acu ag rith i mód async - ach is é do rogha go hiomlán é.

Ní thacaíonn ORM Django, ciseal taisce, agus píosaí eile cód a dhéanann glaonna líonra fadtéarmach le rochtain async fós. Táimid ag súil go gcuirfear tacaíocht dóibh in eisiúintí atá le teacht. Tá tuairimí async oiriúnach, áfach, má tá a lán glaonna API nó HTTP á dhéanamh agat taobh istigh de do radharc, is féidir leat na glaonna HTTP sin go léir a dhéanamh go dúchasach anois go comhthreomhar chun forghníomhú do radharc a bhrostú go mór.

Ba cheart go mbeadh tacaíocht asincrónach go hiomlán comhoiriúnach ar gcúl agus rinneamar iarracht a chinntiú nach bhfuil aon aischéimniú luais ann do do chód sioncrónach reatha. Níor cheart go mbeadh aon éifeacht shuntasach aige ar aon tionscadail Django atá ann cheana féin.

### JSONField do gach cúltaca bunachar sonraí tacaithe

\<django.forms.JSONField\>Cuimsíonn Django anois:class: .Models.JSONField agus:class: Forms.JSONField is féidir a úsáid ar gach cúltaca bunachar sonraí tacaithe. Tacaíonn an dá réimse le húsáid ionchódóirí agus díchódóirí saincheaptha JSON. Tacaíonn an réimse samhail leis an ionspéireacht, :ref: lookups, agus athraitheann \<querying-jsonfield\>\`a bhí roimhe seo PostgreSQL amháin:

```
from django.db import models

class ContactInfo(models.Model):
    data = models.JSONField()

ContactInfo.objects.create(
    data={
        "name": "John",
        "cities": ["London", "Cambridge"],
        "pets": {"dogs": ["Rufus", "Meg"]},
    }
)
ContactInfo.objects.filter(
    data__name="John",
    data__pets__has_key="dogs",
    data__cities__contains="London",
).delete()
```

Má úsáideann do thionscadal `django.contrib.postgres.fields.jsonfield`, móide an réimse foirme gaolmhara agus athfhoirmithe, ba cheart duit coigeartú chun na réimsí nua a úsáid, agus imirce bunachar sonraí a ghiniúint agus a chur i bhfeidhm. \<deprecated-jsonfield\>Go dtí seo, fágtar na sean-réimsí agus na claochruithe mar thagairt do na cinn nua agus tá siad: ref: díscothaithe ó eisiúint seo .

### Socruithe `DEFAULT_HASHING_ALGORITHM`

Ligeann an suíomh idirthréimhseach nua `DEFAULT_HASHING_ALGORITHM` an algartam hashing réamhshocraithe le húsáid le haghaidh fianáin a ionchódú, comharthaí athshocraithe pasfhocal ar an suíomh riaracháin, seisiúin úsáideora agus sínithe cruthaithe ar:class: Django.core.signing.signer agus:meth: django.core.signing.dumps.

Cuireadh tacaíocht do SHA-256 i Django 3.1. Má tá cásanna iolracha den tionscadal céanna á uasghrádú agat go Django 3.1, ba cheart duit `DEFAULT_HASHING_ALGORITHM` a shocrú go ``sha1'` le linn an aistrithe, d'fhonn comhoiriúnacht a cheadú leis na leaganacha níos sine de Django. Tabhair faoi deara go dteastaíonn Django 3.1.1+ air seo. Nuair a bheidh an t-aistriú go 3.1 críochnaithe is féidir leat stop a chur le `DEFAULT_HASHING_ALGORITHM`` a shárú.

Tá an socrú seo imithe amhail an eisiúint seo, toisc go mbainfear tacaíocht do chomharthaí, fianáin, seisiúin agus sínithe a úsáideann algartam SHA-1 i Django 4.0.

### Mionghnéithe

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

- Ceadaíonn an Django.contrib.admin.emptyFieldListFilter\` nua le haghaidh: attr: .modelAdmin.list\_filter scagadh ar luachanna folmha (teaghráin folamh agus neamhairc) i radharc an liosta athraithe riaracháin.
- Tá nasc anois ag scagairí ar an taobh na taobh deise den amharc liosta athraithe riaracháin chun na scagairí go léir a ghlanadh.
- Tá barra taobh ag an riarachán anois ar scáileáin níos mó le haghaidh nascleanúint níos éasca. Tá sé cumasaithe de réir réamhshocraithe ach is féidir é a dhíchumasú trí úsáid a bhaint as saincheaptha `adminsite` agus socrú: attr: .adminsite.enable\_nav\_sidebar go `False`.

  Teastaíonn rochtain ar an iarratas reatha a rindreáil chun rochtain a fháil ar an mbarra taobh chun soláthairtí ról CSS agus ARIA a shocrú. \<TEMPLATES-OPTIONS\>Éilíonn sé seo 'django.template.context\_processors.request'\` a úsáid sa rogha 'context\_processors'\` de:setting: OPTION.
- Ar dtús is féidir línte folamh `breise` a bhaint anois, ar an mbealach céanna le cinn a chruthaítear go dinimiciúil.
- Déantar `XregExp` a uasghrádú ó leagan 2.0.0 go 3.2.0.
- tá jQuery uasghrádaithe ó leagan 3.4.1 go 3.5.1.
- Déantar leabharlann Select2 a uasghrádú ó leagan 4.0.7 go 4.0.13.

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

- Méadaítear an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2 ó 180,000 go 216,000.
- Ligeann an socrú nua:setting: PASSWORD\_RESET\_TIMEOUT líon na soicind a bhfuil nasc athshocraithe pasfhocal bailí dóibh a shainiú. Spreagtar é seo in ionad an socrú `PASSWORD_RESET_TIMEOUT_DAYS` atá díluaite, a bhainfear i Django 4.0.
- Úsáideann an meicníocht athshocraithe pasfhocal an algartam hashing SHA-256 anois. Fanann tacaíocht do chomharthaí a úsáideann an sean-algartam hashing go dtí Django 4.0.
- [`AbstractBaseUser.get_session_auth_hash()`](/ga/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash) now uses the SHA-256 hashing
  algorithm. Support for user sessions that use the old hashing algorithm
  remains until Django 4.0.

#### [`django.contrib.contenttypes`](/ga/6.1/ref/contrib/contenttypes/#module-django.contrib.contenttypes)

- Ceadaíonn an rogha nua:option: remove\_stale\_contenttypes --include-stale-apps cineálacha ábhar seasta a bhaint as aipeanna atá suiteáilte roimhe seo a baineadh ó:setting: INSTALLED\_APPS.

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

- [`relate`](/ga/6.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-relate) lookup is now supported on MariaDB.
- Cuireadh an maoin: attr: .linearring.is\_counterclockwise leis.
- [`AsGeoJSON`](/ga/6.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.AsGeoJSON) is now supported
  on Oracle.
- Cuireadh na feidhmeanna: aicme: ~django.contrib.gis.db.models.functions.aswkb agus:class: ~django.contrib.gis.db.models.functions.aswkt.
- Tacaíocht bhreise do PostGIS 3 agus GDAL 3.

#### [`django.contrib.humanize`](/ga/6.1/ref/contrib/humanize/#module-django.contrib.humanize)

- [`intword`](/ga/6.1/ref/contrib/humanize/#std-templatefilter-intword) template filter now supports negative integers.

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

- Ceadaíonn an rang nua:class: ~django.contrib.postgres.indexes.bloomIndex innéacsanna `bloom` a chruthú sa bhunachar sonraí. Suiteálann an oibríocht imirce nua:class: ~django.contrib.postgres.operations.bloomextension an síneadh `bloom` chun tacaíocht a chur leis an innéacs seo.
- [`get_FOO_display()`](/ga/6.1/ref/models/instances/#django.db.models.Model.get_FOO_display) now supports
  [`ArrayField`](/ga/6.1/ref/contrib/postgres/fields/#django.contrib.postgres.fields.ArrayField) and
  [`RangeField`](/ga/6.1/ref/contrib/postgres/fields/#django.contrib.postgres.fields.RangeField).
- Ceadaíonn na cuardaigh nua:lookup: rangefield.lower\_inc, :lookup: rangefield.lower\_inf, :lookup: rangefield.upper\_inc, agus:lookup: rangefield.upper\_inf fiosrúch:class: ~django.contrib.postgres.fields.rangefield cineál ceangailte.
- [`rangefield.contained_by`](/ga/6.1/ref/contrib/postgres/fields/#std-fieldlookup-rangefield.contained_by) now supports
  [`SmallAutoField`](/ga/6.1/ref/models/fields/#django.db.models.SmallAutoField),
  [`AutoField`](/ga/6.1/ref/models/fields/#django.db.models.AutoField),
  [`BigAutoField`](/ga/6.1/ref/models/fields/#django.db.models.BigAutoField),
  [`SmallIntegerField`](/ga/6.1/ref/models/fields/#django.db.models.SmallIntegerField), and
  [`DecimalField`](/ga/6.1/ref/models/fields/#django.db.models.DecimalField).
- [`SearchQuery`](/ga/6.1/ref/contrib/postgres/search/#django.contrib.postgres.search.SearchQuery) now supports
  `'websearch'` search type on PostgreSQL 11+.
- \<django.contrib.postgres.search.SearchQuery\>:class: Tacaíonn searchQuery.value anois le nathanna fiosrúcháin.
- Ceadaíonn an rang nua:class: ~django.contrib.postgres.search.searchHeadline aird a tharraingt ar thorthaí cuardaigh.
- [`search`](/ga/6.1/ref/contrib/postgres/search/#std-fieldlookup-search) lookup now supports query expressions.
- Ceadaíonn paraiméadar nua `cover_density` de:class: ~django.contrib.postgres.search.searchRank rangú de réir dlús clúdaigh.
- Ceadaíonn an paraiméadar nua `normalization` de:class: ~django.contrib.postgres.search.searchRank normalú céim.
- Ceadaíonn an tréith nua:attr: .ExclusionConstraint.deferrable srianta eisiaimh inathraithe a chruthú.

#### [`django.contrib.sessions`](/ga/6.1/topics/http/sessions/#module-django.contrib.sessions)

- Ceadaíonn an socrú: SETTING: SESSION\_COOKIE\_SAMESITE anois luach `` `None' `` (teaghrán) a lua go sainráite go seoltar an fianán le gach iarratas ar an láithreán céanna agus tras-láithreán.

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

- Tacaíonn an socrú: SETTING: STATICFILES\_DIRS anois:class: Pathlib.path.

#### Cache

- Tacaíonn an modh:func: ~django.views.decorators.cache.cache\_control maisitheoir agus:func: ~django.utils.cache.patch\_cache\_control anois le hainmneacha réimse iolracha sa treoir no-cache\` don cheannteideal `Cache-Control`, de réir: rfc: 7234 #section -5.2.2.2.
- [`delete()`](/ga/6.1/topics/cache/#django.core.cache.cache.delete) now returns `True` if the key was
  successfully deleted, `False` otherwise.

#### CSRF

- Ceadaíonn an socrú:SETTING: CSRF\_COOKIE\_SAMESITE anois luach ``` ``None' ``` (teaghrán) a lua go sainráite go seoltar an fianán le gach iarratas ar an láithreán céanna agus tras-láithreán.

#### Ríomhphost

- \<topic-email-file-backend\>Tacaíonn an socrú: SETTING: EMAIL\_FILE\_PATH, a úsáideann an: ref: cúltaca ríomhphoist comhad \`anois:class: \`Pathlib.path.

#### Tuairisc Earráide

- [`django.views.debug.SafeExceptionReporterFilter`](/ga/6.1/howto/error-reporting/#django.views.debug.SafeExceptionReporterFilter) now filters sensitive
  values from `request.META` in exception reports.
- Ceadaíonn na tréithe nua:attr: .safeExceptionReporterFilter.Cleansed\_Substitute agus:attr: .safeExceptionReporterFilter.Hidden\_Settings socruithe íogaire a shaincheapadh agus scagadh `request.meta` i dtuarascálacha eisceachta.
- Féachann an dearcadh dífhabhtaithe 404 teicniúil anois:setting: DEFAULT\_EXCEPTION\_REPORTER\_FILTER agus scagadh socruithe á chur i bhfeidhm.
- Ceadaíonn an nua:setting: DEFAULT\_EXCEPTION\_REPORTER fo-aicme a: class: Django.views.debug.exceptionReporter a sholáthar chun giniúint tuarascála eisceachta a shaincheapadh. Féach: Ref: custom-earror-reports le haghaidh sonraí.

#### Stóráil Comhad

- Tacaíonn modh FilesystemStorage.save () anois:class: Pathlib.path.
- [`FileField`](/ga/6.1/ref/models/fields/#django.db.models.FileField) and
  [`ImageField`](/ga/6.1/ref/models/fields/#django.db.models.ImageField) now accept a callable for `storage`.
  This allows you to modify the used storage at runtime, selecting different
  storages for different environments, for example.

#### Foirmeacha

- [`ModelChoiceIterator`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceIterator), used by
  [`ModelChoiceField`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceField) and
  [`ModelMultipleChoiceField`](/ga/6.1/ref/forms/fields/#django.forms.ModelMultipleChoiceField), now uses
  [`ModelChoiceIteratorValue`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceIteratorValue) that can be used by widgets
  to access model instances. See [Roghanna caidrimh athraitheacha](/ga/6.1/ref/forms/fields/#iterating-relationship-choices) for
  details.
- [`django.forms.DateTimeField`](/ga/6.1/ref/forms/fields/#django.forms.DateTimeField) now accepts dates in a subset of ISO 8601
  datetime formats, including optional timezone, e.g. `2019-10-10T06:47`,
  `2019-10-10T06:47:23+04:00`, or `2019-10-10T06:47:23Z`. The timezone will
  always be retained if provided, with timezone-aware datetimes being returned
  even when [`USE_TZ`](/ga/6.1/ref/settings/#std-setting-USE_TZ) is `False`.

  Ina theannta sin, úsáideann `DATETIMEFIELD` anois `DATE_INPUT_FORMATS` chomh maith le `DATETIME_INPUT_FORMATS` agus ionchur réimse á thiontú go luach datetime\`.
- [`MultiWidget.widgets`](/ga/6.1/ref/forms/widgets/#django.forms.MultiWidget.widgets) now accepts a dictionary which allows
  customizing subwidget `name` attributes.
- Is féidir an maoin nua:attr: .boundfield.widget\_type a úsáid chun rindreáil foirme a choigeartú go dinimiciúil bunaithe ar an gcineál giuirléid.

#### Idirnáisiúnú

- Ceadaíonn an socrú:SETTING: LANGUAGE\_COOKIE\_SAMESITE anois luach `` `None' `` (teaghrán) a lua go sainráite go seoltar an fianán le gach iarratas ar an láithreán céanna agus tras-láithreán.
- Cuireadh tacaíocht agus aistriúcháin leis na teangacha Araibis na hAilgéire, Igbo, Círgeise, Táidsicí, agus na Tuircméine.

#### Orduithe Bainistíochta

- Ligeann an rogha nua:option: check --database ainmneacha bunachar sonraí a shonrú chun na seiceálacha córais bunachar sonraí a reáchtáil. Roimhe seo cuireadh na seiceálacha seo ar chumas do gach cumraí:setting: DATABASES tríd an gclib bunachar sonraí a chur chuig an ordú.
- Déanann an rogha nua:option: migration --check imeacht an t-ordú imeacht le stádas neamh-nialasach nuair a bhraitear imirce neamhfheidhmeacha.
- Ligeann an argóint nua `returncode` le haghaidh: attr: ~django.core.management.commandError an stádas imeachta d'orduithe bainistíochta a shaincheapadh.
- Ligeann an rogha nua:option: dbshell -- ARGUMENTS \<dbshell --\>\`argóintí breise a chur chuig an gcliant líne ordaithe don bhunachar sonraí.
- Cuimsíonn na horduithe: Djadmin: flush agus:djadmin: sqlflush SQL anois chun seicheamh a athshocrú ar SQLite.

#### Samhla

- Baineann an fheidhm nua:class: ~django.db.models.functions.extractisoWeekday laethanta seachtaine ISO-8601 ó:class: ~django.db.models.dateField agus:class: ~Django.db.Models.DateTimeField, agus ceadaíonn an nua:lookup: iso\_week\_day fiosrú ag ISO-8601 lá den tseachtain.
- [`QuerySet.explain()`](/ga/6.1/ref/models/querysets/#django.db.models.query.QuerySet.explain) now supports:

  - Formáid `TREE` ar MySQL 8.0.16+,
  - Rogha anailíse\` ar MySQL 8.0.18+ agus MariaDB.
- Cuireadh leis: Class: ~Django.db.Models.PositiveBigIntegerField a fheidhmíonn cosúil le a:class: ~Django.db.Models.PositiveIntegerField ach amháin nach gceadaíonn sé ach luachanna faoi theorainn áirithe (atá ag brath ar bhunachar sonraí). Tá luachanna ó 0\` go 9223372036854775807\` sábháilte i ngach bunachar sonraí a thacaíonn Django.
- Déanann an rogha nua:class: ~django.db.models.restrict le haghaidh: attr: ~django.db.models.foreignKey.on\_delete argóint `ForeignKey` agus OneTooneField\` aithris ar iompar an srianta SQL `ON DELETE RESTRICT`.
- Tacaíonn `CheckConstraint.Check` anois le nathanna boolean.
- Glacann na modhanna: Meth: .RelatedManager.add, :meth: ~.relatedManager.create, agus:meth: ~.relatedManager.set anois le glaonna mar luachanna san argóint through\_defaults\`.
- Cinneann paraiméadar nua `is_dst` den: meth: .queryset.DateTimes cóireáil dáta nach bhfuil ann agus débhríoch.
- \<using-f-expressions-in-filters\>Ceadaíonn an modh nua:class: ~django.db.Models.f abairt `` bitxor () ` ``: ref: oibríocht XOR bitwise.
- : meth: .queryset.bulk\_create socraíonn anois an príomh-eochair ar rudaí agus MariaDB 10.5+ á úsáid agat.
- Gineann an modh `DatabaseOperations.sql_Flush ()` SQL níos éifeachtaí anois ar MySQL trí DELETE\` a úsáid in ionad ráitis `TRUNCATE` le haghaidh táblaí nach dteastaíonn seicheamh athshocraithe uathshocraithe uathu.
- SQLite functions are now marked as [`deterministic`](https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_function) on Python 3.8+. This allows using them
  in check constraints and partial indexes.
- Ceadaíonn an tréith nua:attr: .UniqueConstraint.Deferrable srianta uathúla inathraithe a chruthú.

#### Leathanaigh

- [`Paginator`](/ga/6.1/ref/paginator/#django.core.paginator.Paginator) can now be iterated over to yield
  its pages.

#### Iarrataí agus Freagraí

- Má tá: SETTING: ALLOWED\_HOSTS folamh agus `debug=true`, ceadaítear fo-fhearann localhost anois sa cheannteideal `Host`, m.sh. static.localhost\`.
- [`HttpResponse.set_cookie()`](/ga/6.1/ref/request-response/#django.http.HttpResponse.set_cookie) and [`HttpResponse.set_signed_cookie()`](/ga/6.1/ref/request-response/#django.http.HttpResponse.set_signed_cookie)
  now allow using `samesite='None'` (string) to explicitly state that the
  cookie is sent with all same-site and cross-site requests.
- Tugann an modh nua:meth: .httpRequest.Accepts ar ais cibé an nglacann an t-iarratas leis an gcineál MIME tugtha de réir an cheannteideal HTTP `Accept`.

#### Slándáil

- Tá an socrú: SETTING: SECURE\_REFERRER\_POLICY réamhshocraithe anois go `` `'same-origin' ``. Agus é seo cumraithe, socraíonn :class: ~django.middleware.securityMiddleware an ceannteideal: ref: referrer-policy go `same-origin` ar gach freagra nach bhfuil sé ann cheana féin. Cuireann sé seo cosc ar an gceannteideal `Referer` a sheoladh chuig bunús eile. Má theastaíonn an t-iompar roimhe seo uait, socraigh go sainráite:setting: SECURE\_REFERRER\_POLICY go `None`.
- Athraítear an algartam réamhshocraithe de:class: django.core.signing.signer, :meth: django.core.signing.loads, agus:meth: django.core.signing.dumps go an SHA-256. Fanann tacaíocht do shínithe a rinneadh leis an sean-algartam SHA-1 go dtí Django 4.0.

  Chomh maith leis sin, ceadaíonn paraiméadar nua algorithm den: class: ~django.core.signing.signer an algartam hashing a shaincheapadh.

#### Teimpléid

- Tugann na clibeanna teimpléad athainmnithe: ttag: translate agus:ttag: blocktranslate isteach le haghaidh idirnáisiúnaithe i gcód teimpléid. Leanann na hainmneacha clibeanna teimpléad níos sine: ttag: trans agus:ttag: blocktrans ag obair, agus coinneofar iad go luath amach anseo.
- Glacann an chlib teimpléad: ttag: include anois le hathrinneacha ainmneacha teimpléad.

#### Tástálacha

- [`SimpleTestCase`](/ga/6.1/topics/testing/tools/#django.test.SimpleTestCase) now implements the `debug()` method to
  allow running a test without collecting the result and catching exceptions.
  This can be used to support running tests under a debugger.
- Ligeann an socrú bunachar sonraí tástála nua:setting: MIG \<TEST\_MIGRATE\>RATE imirce a dhíchumasú le linn cruthú bunachar sonraí tástála.
- [`DiscoverRunner`](/ga/6.1/topics/testing/advanced/#django.test.runner.DiscoverRunner) can now discard output for
  passing tests using the [`test --buffer`](/ga/6.1/ref/django-admin/#cmdoption-test-buffer) option.
- \<testing-multi-db\>:class: ~django.test.runner.DiscoverRunner scipeann anois seiceálacha an chórais a reáchtáil ar bhunachair sonraí not:ref: tagraítear le tástálacha .
- [`TransactionTestCase`](/ga/6.1/topics/testing/tools/#django.test.TransactionTestCase) teardown is now faster on MySQL
  due to [`flush`](/ga/6.1/ref/django-admin/#django-admin-flush) command improvements. As a side effect the latter
  doesn't automatically reset sequences on teardown anymore. Enable
  [`TransactionTestCase.reset_sequences`](/ga/6.1/topics/testing/advanced/#django.test.TransactionTestCase.reset_sequences) if your tests require this
  feature.

#### URLanna

- [Path converters](/ga/6.1/topics/http/urls/#registering-custom-path-converters) can now raise
  `ValueError` in `to_url()` to indicate no match when reversing URLs.

#### Fóntais

- [`filepath_to_uri()`](/ga/6.1/ref/utils/#django.utils.encoding.filepath_to_uri) now supports
  [`pathlib.Path`](https://docs.python.org/3/library/pathlib.html#pathlib.Path).
- [`parse_duration()`](/ga/6.1/ref/utils/#django.utils.dateparse.parse_duration) now supports comma separators
  for decimal fractions in the ISO 8601 format.
- [`parse_datetime()`](/ga/6.1/ref/utils/#django.utils.dateparse.parse_datetime),
  [`parse_duration()`](/ga/6.1/ref/utils/#django.utils.dateparse.parse_duration), and
  [`parse_time()`](/ga/6.1/ref/utils/#django.utils.dateparse.parse_time) now support comma separators for
  milliseconds.

#### Ilghnéitheach

- Tacaíonn an cúltaca SQLite anois:class: Pathlib.path don socrú `NAME`.
- Úsáideann an settings.py\` a ghineann an t-ordú:djadmin: startproject anois:class: pathlib.path in ionad:mod: os.path chun cosáin chórais comhaid a thógáil.
- Ceadaítear an socrú: SETTING: TIME\_ZONE \<DATABASE-TIME\_ZONE\>\`anois ar bhunachair sonraí a thacaíonn le criosanna ama.

## Athruithe neamh-chomhoiriúnacha ar ais i 3.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í.

- `DatabaseOperations.fetch_returned_insert_Columns ()` teastaíonn argóint breise `` `returning_params `` anois.
- \<DATABASE-TIME\_ZONE\>Tá maoin `connection.timezone` anois `UTC'` de réir réamhshocraithe, nó an:setting: TIME\_ZONE \`nuai:setting: \`USE\_TZ `True` ar bhunachair sonraí a thacaíonn le criosanna ama. Roimhe seo, bhí sé `None` ar bhunachair sonraí a thacaíonn le criosanna ama.
- `nasc. Athraítear maoin _nodb_connection` go dtí an nasc. Modh \_nodb\_cursor () \`\`agus filleann bainisteoir comhthéacs anois a thugann cúrsóir agus a dhúnann an cúrsóir agus an nasc go huathoibríoch nuair a fhágann sé an ráiteas \`\`with.
- Teastaíonn DatabaseClient.runShell () \`\`argóint breise \`\`paraiméadair\` anois mar liosta d'argóintí breise le cur ar aghaidh chuig an gcliant líne ordaithe.
- Cuirtear an argóint boolean eochairfhocal amháin `reset_sequences` in ionad an argóint seasaimh `seicheamh` de databaseOperations.sql\_flush () \`. Má tá “Fíor”, athshocrófar seicheamh na dtáblaí gearrtha.
- Is argóint eochairfhocal amháin é an argóint allow\_cascade\` de databaseOperations.sql\_flush () anois.
- Baintear an argóint seasaimh `úsáid` de databaseOperations.execute\_SQL\_Flush () \`. Úsáideann an modh bunachar sonraí an chás ar a dtugtar air anois.
- Caithfidh cúltaca bunachar sonraí tríú páirtí tacaíocht do JSONField\` a chur i bhfeidhm nó `DatabaseFeatures.supports_JSON_Field` a shocrú go `False`. Mura dtacaítear le príomhiontacha a stóráil, socraigh `DatabaseFeatures.supports_primitives_in_json_field` go `False`. Má tá fíor-chineál sonraí ann do JSON, socraigh `DatabaseFeatures.has_Native_JSON_Field` go `True`. Más rud é nach dtacaítear le lookup: jsonfield.contains agus:lookup: jsonfield.contained\_by, socraigh `databaseFeatures.supports_json_field_contains` go `False`.
- Caithfidh cúltaca bunachar sonraí tríú páirtí introspection a chur i bhfeidhm do Jsonfield\` nó `can_introspect_json_field` a shocrú go `False`.

### Tacaíocht titim do MariaDB 10.1

Críochnaíonn tacaíocht suas srutha do MariaDB 10.1 i mí Dheireadh Fómhair 2020. Tacaíonn Django 3.1 le MariaDB 10.2 agus níos airde.

### Tacaíocht brabhsálaí `contrib.admin`

Ní thacaíonn an riarachán le brabhsálaí oidhreachta Internet Explorer a thuilleadh Féach:ref: an Ceisteanna Coitianta riaracháin \<admin-browser-support\>\`le haghaidh sonraí faoi bhrabhsálaithe tacaithe.

### \<django.contrib.auth.models.User.first\_name\>:attr: Abstractuser.first\_name max\_length méadaithe go 150

Tá imirce le haghaidh: attr: django.contrib.auth.models.user.first\_name san áireamh. Má tá samhail úsáideora saincheaptha agat ag oidhreacht ó AbstractUser\`, beidh ort imirce bunachar sonraí a ghiniúint agus a chur i bhfeidhm do do mhúnla úsáideora.

Más mian leat an teorainn 30 carachtar a chaomhnú do chéad ainmneacha, bain úsáid as foirm saincheaptha:

```
from django import forms
from django.contrib.auth.forms import UserChangeForm

class MyUserChangeForm(UserChangeForm):
    first_name = forms.CharField(max_length=30, required=False)
```

Más mian leat an srian seo a choinneáil sa riarachán agus tú ag eagarthóireacht úsáideoirí, socraigh `UserAdmin.form` chun an fhoirm seo a úsáid:

```
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class MyUserAdmin(UserAdmin):
    form = MyUserChangeForm

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
```

### Ilghnéitheach

- Tá na heochracha taisce a úsáideann: ttag: cache agus arna ghineadh ar:func: ~django.core.cache.utils.make\_template\_fragment\_key difriúil ó na heochracha a ghineann leaganacha níos sine de Django. Tar éis uasghrádú a dhéanamh go Django 3.1, is é an chéad iarratas ar aon bhrúin teimpléad a chosáilte roimhe seo ná caillte taisce.
- Tá an loighic taobh thiar den chinneadh titim atreoraithe nó freagra 204 HTTP a thabhairt ar ais ón amharc: func: ~django.views.i18n.set\_language bunaithe anois ar an gceannteideal HTTP `` `Accept `` in ionad an X-Requested-With\` HTTP láithreacht.
- Baintear allmhairí comhoiriúnachta `django.core.exceptions.emptyResultSet` i django.db.models.query\`, django.db.models.sql\`, agus `django.db.models.sql.datastructures`.
- Baintear allmhairiú comhoiriúnachta `Django.Core.Exceptions.FieldDoesNotExist` i `django.db.models.fields`.
- Baintear allmhairí comhoiriúnachta ```django.forms.utils.pretty_name () ``agus ``django.forms.boundfield.boundfield``` i django.forms.forms\`.
- Baintear allmhairí comhoiriúnachta `Context`, ContextPopException\`, agus `RequestContext` i django.template.base\`.
- Baintear allmhairiú comhoiriúnachta `django.contrib.admin.helpers.ACTION_CHECKBOX_NAME` i `django.contrib.admin`.
- Tá na socruithe [`STATIC_URL`](/ga/6.1/ref/settings/#std-setting-STATIC_URL) agus [`MEDIA_URL`](/ga/6.1/ref/settings/#std-setting-MEDIA_URL) socraithe chuig cosáin choibhneasta socraithe anois ag an luach arna sholáthar ag an bhfreastalaí de `SCRIPT_NAME` (nó `/` mura bhfuil sé socraithe). Níor cheart go gcuirfeadh an t-athrú seo isteach ar shocruithe a shocraítear chuig URLanna bailí nó ar bhealaí iomlána.
- [`ConditionalGetMiddleware`](/ga/6.1/ref/middleware/#django.middleware.http.ConditionalGetMiddleware) no longer adds the
  `ETag` header to responses with an empty
  [`content`](/ga/6.1/ref/request-response/#django.http.HttpResponse.content).
- `django.utils.decorators.classproperty()` decorator is made public and
  moved to [`django.utils.functional.classproperty`](/ga/6.1/ref/utils/#django.utils.functional.classproperty).
- [`floatformat`](/ga/6.1/ref/templates/builtins/#std-templatefilter-floatformat) template filter now outputs (positive) `0` for
  negative numbers which round to zero.
- [`Meta.ordering`](/ga/6.1/ref/models/options/#django.db.models.Options.ordering) and
  [`Meta.unique_together`](/ga/6.1/ref/models/options/#django.db.models.Options.unique_together)
  options on models in `django.contrib` modules that were formerly tuples are
  now lists.
- Láimhseálann an giuirléid féilire riaracháin bliana dhá dhigit anois de réir Sonraíocht an Ghrúpa Oscailte, ie déantar luachanna idir 69 agus 99 a mhapáil leis an gcéad roimhe seo, agus déantar luachanna idir 0 agus 68 a mhapáil leis an gcéad reatha.
- Baintear formáidí dáta amháin ón liosta réamhshocraithe le haghaidh: setting: DATETIME\_INPUT\_FORMATS.
- Ní dhéanann an giuirléid: Class: ~django.forms.FileInput leis an tréith HTML `riachtan` a thuilleadh nuair a bhíonn sonraí tosaigh ann.
- Baintear an rang `Django.Views.Debug.ExceptionReporterFilter` neamhdhoiciméadaithe. De réir na doiciméadaithe: ref: custom-error-reports \`, ní mór ranganna atá le húsáid le:setting: \`DEFAULT\_EXCEPTION\_REPORTER\_FILTER oidhreacht ó:class: django.views.debug.safeEXCEPtionReporterFilter.
- Tá tosaíocht anois ag maisitheoir an t-am taisce arna leagan síos ag: func: ~django.views.decorators.cache.cache\_page os cionn an treoir `max-age` ón gceannteideal `Cache-Control`.
- Réimse iargúlta neamh-áitiúil a sholáthar san argóint: attr: .foreignKey.to\_field anois:class: ~django.core.exceptions.fielderror.
- [`SECURE_REFERRER_POLICY`](/ga/6.1/ref/settings/#std-setting-SECURE_REFERRER_POLICY) now defaults to `'same-origin'`. See the
  *What's New* [Security section](#whats-new-security-3-1) above for more
  details.
- : djadmin: Ritheann ordú bainistíochta check seiceálacha an chórais bunachar sonraí anois ach amháin le haghaidh ainmneacha bunachar sonraí a shonraítear ag baint úsáid:option: check --database rogha.
- [`migrate`](/ga/6.1/ref/django-admin/#django-admin-migrate) management command now runs the `database` system checks
  only for a database to migrate.
- Baintear na ranganna CSS riaracháin `row1` agus `row2` i bhfabhar bréagaicmí ```:nth-child (odd) ``agus ``:nth-child (even)```.
- Éilíonn an fheidhm:func: ~django.contrib.auth.hashers.make\_password anois go mbeadh a argóint ina shreang nó béite. Ba chóir cineálacha eile a chaitheamh go sainráite chuig ceann acu seo.
- Baintear an paraiméadar `version` neamhdhoiciméadaithe chuig an bhfeidhm:class: ~django.contrib.gis.db.models.functions.askml.
- [JSON and YAML serializers](/ga/6.1/topics/serialization/#serialization-formats), used by
  [`dumpdata`](/ga/6.1/ref/django-admin/#django-admin-dumpdata), now dump all data with Unicode by default. If you need
  the previous behavior, pass `ensure_ascii=True` to JSON serializer, or
  `allow_unicode=False` to YAML serializer.
- Ní dhéanann an t-uathlódálaí monatóireacht a thuilleadh ar athruithe i gcomhaid aistriúcháin Django ionsuite.
- Méadaítear an leagan íosta tacaithe de mysqlclient\` ó 1.3.13 go 1.4.0.
- Bogtar na `django.contrib.postgres.forms.invalidjsonInput` agus `Django.contrib.postgres.forms.jsonString` neamhdhoiciméadaithe chuig `django.forms.fields`.
- Baintear an rang `Django.contrib.postgres.fields.jsonb.jsonAdapter` neamhdhoiciméadaithe.
- Ní thuilleadh an scagaire: ttag: {% localize off%} agus: \<localize\>tfilter: unlocalize a thuilleadh: socrú: DECIMAL\_SEPARATOR.
- Méadaítear an leagan íosta tacaithe de asgiref\` ó 3.2 go 3.2.10.
- \</topics/forms/media\> \< <https://html.spec.whatwg.org/multipage/scripting.html#the-script-element>\>Déanann rang:doc: Meáin \`clibeanna \`\` anois gan an tréith cineál\` le moltaí WHATWG \_ a \<script\>leanúint.
- [`ModelChoiceIterator`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceIterator), used by
  [`ModelChoiceField`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceField) and
  [`ModelMultipleChoiceField`](/ga/6.1/ref/forms/fields/#django.forms.ModelMultipleChoiceField), now yields 2-tuple choices
  containing [`ModelChoiceIteratorValue`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceIteratorValue) instances as the
  first `value` element in each choice. In most cases this proxies
  transparently, but if you need the `field` value itself, use the
  [`ModelChoiceIteratorValue.value`](/ga/6.1/ref/forms/fields/#django.forms.ModelChoiceIteratorValue.value) attribute instead.

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

### PostgreSQL `Jsonfield`

\<django.forms.JSONField\>Tá `Django.Contrib.Postgres.Fields.JsonField` agus `Django.Contrib.Postgres.Forms.JsonField` a dhíchur i bhfabhar: .Models.JSONField agus:class: Forms.JSONField.

Tá na django.contrib.postgres.fields.jsonb.keytransform\` agus `Django.contrib.postgres.fields.jsonb.keytextTransform` neamhdhoiciméadaithe i bhfabhar na n-athfhoirmithe i django.db.models.fields.json\`.

Is féidir an `JSONField`s, KeyTransform\`, agus KeyTextTransform\` nua a úsáid ar gach cúltaca bunachar sonraí tacaithe.

### Ilghnéitheach

- Tá socrú `PASSWORD_RESET_TIMEOUT_DAYS` a dhíchur i bhfabhr:setting: PASSWORD\_RESET\_TIMEOUT.
- Úsáid neamhdhoiciméadaithe an chuardaigh: lookup: isnull le luachanna neamh-boolean de réir mar a dhéantar an taobh na láimhe deise a dhíchur, bain úsáid as True\` nó False\` ina ionad sin.
- Tá an rang eisceachta `Django.db.Models.Query_Utils.InvalidQuery` doiciméadaithe ar éigean i bhfabhar: ~Django.Core.Exceptions.FieldDoesNotExist agus:class: ~Django.Core.Exceptions.FieldDoesNotExist agus:class: ~Django.Core.Exceptions.Fielderror.
- Tá an pointe iontrála `django-admin.py` a dhíchur i bhfabhar django-admin .
- \< [https://developer.mozilla.org/en-US/docs/Web/API/Fetch\_API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\>Tá an modh HttpRequest.is\_ajax () \`díluaite toisc go raibh sé ag brath ar bhealach JQuery-shonrach chun glaonna AJAX a léiriú, agus is gnách go n-úsáideann úsáid reatha an JavaScript \`Fetch API \`\_. Ag brath ar do chás úsáide, is féidir leat do mhodh braite AJAX féin a scríobh, nó an modh nua: meth: \`.httpRequest.Accepts a úsáid má bhraitheann do chód ar cheannteideal HTTP an chliaint `Accept`.

  Má tá do mhodh braite AJAX féin á scríobh agat, is féidir request.is\_ajax () a atáirgeadh go díreach mar \`\`request.headers.get ('x-requested-with') == 'XMLHttpRequest'.
- Ag dul `None` mar an chéad argóint chuig django.utils.deprecation.middlewaremixin. Tá \_\_init\_\_ () díluaite.
- Tá formáid ionchódú luachanna fianáin a úsáideann u:class: ~django.contrib.messages.storage.cookie.cookie.cookieStorage difriúil ón bhformáid a ghineann leaganacha níos sine de Django. Tá tacaíocht don sean-fhormáid fós go dtí Django 4.0.
- Tá formáid ionchódú na seisiúin difriúil ón bhformáid a ghineann leaganacha níos sine de Django. Tá tacaíocht don sean-fhormáid fós go dtí Django 4.0.
- Tá an argóint doiciméadach amháin `providing_args` le haghaidh: class: ~django.Dispatch.Signal a dhíchur. Má tá tú ag brath ar an argóint seo mar dhoiciméadú, is féidir leat an téacs a bhogadh chuig trácht cód nó docstring.
- Tá glaoch ar ```django.utils.crypto.get_random_string () ``gan argóint ``length```, cuirtear díluasc.
- Tá an teachtaireacht `liost` do:class: ~django.forms.ModelMultipleChoiceField a dhíchur i bhfabhar `invalid_list`.
- Tá ainmneacha colún amh a chur chuig: meth: .queryset.ORDER\_by atá díluaite. Is féidir an toradh céanna a bhaint amach trí ainmneacha a rith in a:class: ~Django.db.Models.Expressions.RawSql roimh ré.
- Tá an réimse samhail `NullBooleanField` a dhíchur i bhfabhar BooleanField (Null=True, Blank = True) .
- Tá django.conf.urls.url () alias o:func: \`django.urls.re\_path díscothaithe.
- \<django.template.backends.django.DjangoTemplates\>\<TEMPLATES-OPTIONS\>Tá na clibeanna teimpléad `{% ifequal%}` agus ``{% ifnotequal%} `díluaite i bhfabhra:ttag:` {% if%} `<if>. Clúdaíonn`` {% if%}\` gach cás úsáide, ach más gá duit leanúint ar aghaidh ag úsáid na clibeanna seo, is féidir iad a bhaint as Django go modúl agus a áireamh mar chlib ionsuite san :class: builtin' '\`rogha in:socrú: \`ROGHANNA.
- Tá socrú idirthréimhseach `DEFAULT_HASHING_ALGORITHM` díchuimsithe.

## Gnéithe bainte i 3.1

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

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

- Baintear `django.utils.timezone.fixeDoffset`.
- Baintear `django.core.paginator.querysetPaginator`.
- Ní dhéanann `Meta.Ordering` samhail difear do cheisteanna `GROUP BY`.
- Baintear `Django.Contrib.Postgres.Fields.FloatRangeField` agus `Django.Contrib.Postgres.Forms.FloatRangeField`.
- Baintear an socrú `FILE_CHARSET`.
- Baintear `Django.contrib.staticfiles.storage.cachedStaticFilesStorage`.
- Éilíonn an modh ````RemoteUserBackend.configure_user () ```request```` mar an chéad argóint seasaimh.
- Baintear tacaíocht do SimpletestCase.ALLOW\_DATABASE\_Queries\` agus `TransactionTestCase.Multi_DB`.
