Nótaí scaoilte Django 5.1Link to this heading

7 Lúnasa, 2024

Fáilte go Django 5.1!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua <whats-new-5.1>, chomh maith le roinnt athruithe: ref: athruithe neamh-chomhoiriúnacha ar chúl<backwards-incompatible-5.1> ba chóir duit a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 5.0 nó níos luaithe. <deprecated-features-5.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 PythonLink to this heading

Tacaíonn Django 5.1 le Python 3.10, 3.11, 3.12, agus 3.13 (amhail 5.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 5.1Link to this heading

{% querystring%} clib teimpléadLink to this heading

Tugann Django 5.1 clib te <querystring>impléad:ttag: {% querystring%} isteach, ag simpliú modhnú paraiméadair cheisteanna in URLanna, rud a fhágann go bhfuil sé níos éasca naisc a ghiniúint a choinníonn paraiméadair cheisteanna atá ann cheana agus cinn sonracha á chur leis nó a athrú.

Mar shampla, féadann sé a bheith an-deacair uimhriú leathanach agus teaghráin ceisteanna i dteimpléid a nascleanúint. Smaoinigh ar an blúire teimpléad seo a ghineann URL go dinimiciúil chun dul chuig an gcéad leathanach eile laistigh d'amharc leathanachach:

Django template
{# Linebreaks added for readability, this should be one, long line. #}
<a href="?{% for key, values in request.GET.iterlists %}
  {% if key != "page" %}
    {% for value in values %}
      {{ key }}={{ value }}&amp;
    {% endfor %}
  {% endif %}
{% endfor %}page={{ page.next_page_number }}">Next page</a>

Agus tú ag aistriú chuig an gclib teimpléid nua seo a úsáid, bíonn an méid thuas go draíochta:

Django template
<a href="{% querystring page=page.next_page_number %}">Next page</a>

Linnte Ceangail PostgreSQLLink to this heading

Tugann Django 5.1 isteach freisin: ref: tacaíocht `linn nasc <postgresql-pool>`do PostgreSQL. Toisc gur féidir leis an am chun nasc nua a bhunú a bheith réasúnta fada, is féidir le naisc a choinneáil oscailte an latency a laghdú.

Chun linn nasc le psycopg a úsáid, is féidir leat an rogha "pool" a shocrú taobh istigh: setting: OPTIONS chun a bheith ina dhic le rith chuig:class: ~psycopg:psycopg_pool.connectionpool, nó chuig True` chun na réamhshocruithe ConnectionPool a úsáid:

Code
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        # ...
        "OPTIONS": {
            "pool": {
                "min_size": 2,
                "max_size": 4,
                "timeout": 10,
            }
        },
    },
}

Middleware chun fíordheimhniú de réir réamhshocraithe a bheithLink to this heading

Atreoraíonn an nua:class: ~django.contrib.auth.middleware.loginrequiredMiddleware gach iarratas neamhfhíordheimhnithe chuig leathanach logála isteach. Is féidir le tuairimí iarratais neamhfhíordheimhnithe a cheadú tríd an maisitheoir nua:func: ~django.contrib.auth.decorators.login_not_required a úsáid.

Meas LoginRequiredMiddleware na luachanna login_url agus redirect_field_name atá leagtha amach trí:func: ~.django.contrib.auth.decorators.login_required, ach ní thacaíonn sé le login_urlredirect_field_name a shocrú trí:class: ~django.contrib.auth.mixins.loginrequiredMixin`.

Chun é seo a chumasú, cuir ``"django.contrib.auth.middleware.loginrequiredMiddleware"` le do shuíomh: MIDDLEWARE.

MionghnéitheLink to this heading

django.contrib.adminLink to this heading

django.contrib.authLink to this heading

  • Méadaítear an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2 ó 720,000 go 870,000.

  • Méadaítear réamhshocraithe parallelism den ScryptPasswordHasher` ó 1 go 5, chun moltaí OWASP a leanúint.

  • Tacaíonn an nua:class: ~django.contrib.auth.forms.adminUserCreationForm agus an: class: ~django.contrib.auth.forms.adminPasswordChangeForm atá ann cheana anois le fíordheimhniú pasfhocal a dhíchumasú trí phasfhocal neamhúsáidte a shocrú ar shábháil foirm. Tá sé seo ar fáil anois sa riarachán agus tú ag cuairt ar na leathanaigh cruthaithe úsáideora agus athraithe pasfhocal.

  • login_required(), permission_required(), and user_passes_test() decorators now support wrapping asynchronous view functions.

  • Cuimsíonn ReadOnlyPasswordHashWidget cnaipe anois chun pasfhocal an úsáideora a athshocrú, a athshocraíonn an nasc atá leabaithe roimhe seo i dtéacs cabhrach ReadOnlyPasswordHashField, ag feabhsú inrochtaineacht fhoriomlán na:class: ~django.contrib.auth.forms.userChangeForm.

django.contrib.gisLink to this heading

  • BoundingCircle is now supported on SpatiaLite 5.1+.

  • Collect is now supported on MySQL 8.0.24+.

  • GeoIP2 now allows querying using ipaddress.IPv4Address or ipaddress.IPv6Address objects.

  • GeoIP2.country() now exposes the continent_code, continent_name, and is_in_european_union values.

  • : meth: Nochtann .geoip2.city anois na luachanna `curacy_radius agus region_name. Ina theannta sin, nochtar na luachanna dma_code agus region anois mar metro_code agus region_code, ach coinnítear na heochracha roimhe seo freisin le haghaidh comhoiriúnacht ar chúl.

  • Area now supports the ha unit.

  • Ligeann an tréith nua:attr: .ogrgeometry.is_3d a sheiceáil an bhfuil toise comhordaithe Z ag geoiméadacht.

  • Ligeann an modh nua:meth: .ogrgeometry.set_3d an toise comhordaithe Z a chur leis agus a bhaint.

  • OGRGeometry, Point, LineString, Polygon, and GeometryCollection and its subclasses now support measured geometries via the new OGRGeometry.is_measured and m properties, and the OGRGeometry.set_measured() method.

  • OGRGeometry.centroid is now available on all supported geometry types.

  • FromWKB() and FromWKT() functions now support the optional srid argument (except for Oracle where it is ignored).

django.contrib.postgresLink to this heading

  • BTreeIndex now supports the deduplicate_items parameter.

django.contrib.sessionsLink to this heading

  • <django-contrib-sessions-logger>:class: django.contrib.sessions.backends.cached_db.sessionStore láimhseálann eisceachtaí anois nuair a bhíonn faisnéis seisiúin á stóráil sa taisce, ag logáil teachtaireachtaí earráide cearta lena rianú tríd an logger nua-chuirte:ref: session logger.

  • django.contrib.sessions.backends.base.SessionBase and all built-in session engines now provide async API. The new asynchronous methods all have a prefixed names, e.g. aget(), akeys(), or acycle_key().

Cúltaca bunachar sonraíLink to this heading

  • <sqlite-init-command>Tacaítear anois le rogha "init_command" in:setting: OPTIONS ar SQLite chun ligean sonraithe:ref: roghanna pragma a shocrú ar nasc.

  • Tacaítear anois le rogha "transaction_mode" in:setting: OPTIONS ar SQLite chun ligean an: ref: `sqlite-transaction-iompraíocht a shonrú.

  • <postgresql-pool>Tacaítear anois le rogha "pool" in:setting: OPTIONS ar PostgreSQL chun cead a bhaint as: ref: linnte nasc.

Tuairisc EarráideLink to this heading

  • D'fhonn inrochtaineacht a fheabhsú, úsáideann na leathanaigh earráide teicniúla 404 agus 500 eilimintí sainchomharthaí HTML anois don cheanntásc, buntásc agus príomhréimsí ábhair.

Stóráil ComhadLink to this heading

  • Ceadaíonn an paraiméadar: Attr: ~django.core.files.storage.filesystemStorage.allow_overwrite de:class: ~django.core.files.storage.filesystemStorage comhaid nua a shábháil thar na cinn atá ann cheana anois.

FoirmeachaLink to this heading

  • D'fhonn inrochtaineacht a fheabhsú agus chun léitheoirí scáileáin a chumasú tacair réimse a cheangal lena dtéacs cabhrach, tá an tréith HTML aria-describedby` sa tacar réimse foirme anois.

Orduithe BainistíochtaLink to this heading

  • <django.db.migrations.operations.base.OperationCategory>Taispeánann an t-ordú: DjaDmin: makemigrations siombailí bríocha anois do gach oibríocht chuig hardlight: class: `catagóirí oibríochta `.

ImirceLink to this heading

  • Ligeann an tréith nua Operation.Category a shonrú an:class: catagóir oibríochta `a úsáideann na:djadmin: `makemigrations<django.db.migrations.operations.base.OperationCategory> chun siombail bhrí don oibríocht a thaispeáint.

SamhlaLink to this heading

  • QuerySet.explain() now supports the generic_plan option on PostgreSQL 16+.

  • RowRange now accepts positive integers for the start argument and negative integers for the end argument.

  • Ceadaíonn an argóint nua eisiam de:class: ~django.db.Models.Expressions.RowRange agus:class: ~django.db.Models.Expressions.ValueRange sraitheanna, grúpaí agus ceangail a eisiamh ó fhrámaí na bhfuinneoga.

  • QuerySet.order_by() now supports ordering by annotation transforms such as JSONObject keys and ArrayAgg indices.

  • <slicing-using-f>:class: F () <django.db.models.F>`agus:class: `OuterRef () abairtí a aschuir:class: ~django.d <django.db.models.OuterRef>b.models.charfield, :class: ~django.db.models.emails.field, :class: ~django.db.models.slugfield, :class: ~django.db.models.urlfield , :class: `~django.db.Models.TextField, nó:class: ~django.contrib.postgres.fields.arrayfield is féidir anois:ref: sliseadh.

  • Ligeann an argóint nua from_queryset de:meth: .model.Refresh_from_db agus:meth: .model.arefresh_from_db an tacar fiosrúcháin a úsáidtear chun luach samhail a athluchtú a shaincheapadh. Is féidir é seo a úsáid chun an tsraith a ghlasáil sula n-athluchtú nó chun rudaí gaolmhara a roghnú.

  • Ligeann an tréith nua:attr: .expression.restricint_validation_compatible a shonrú gur chóir neamhaird a dhéanamh ar an abairt le linn bailíochtaithe srianta.

TeimpléidLink to this heading

  • Féadfaidh clibeanna saincheaptha sonraí breise a shocrú anois ar an réad ``Parser` a chuirfear ar fáil níos déanaí ar an gcás ``Teimpléad`. Féadfaidh an lódóir teimpléid, nó cliaint teimpléid eile sonraí den sórt sin a úsáid, mar shampla.

  • Template engines now implement a check() method that is already registered with the check framework.

TástálachaLink to this heading

  • assertContains(), assertNotContains(), and assertInHTML() assertions now add haystacks to assertion error messages.

  • Tacaíonn ranga:Class: ~django.test.requestFactory, :class: ~django.test.asyncRequestFactory, :class: ~django.test.client, ag:class: ~django.test.asyncClient anois leis an paraiméadar query_params, a ghlacann le foclóir eochracha agus luachanna ceisteanna. Ligeann sé seo teaghráin fiosrúcháin a shocrú ar aon mhodhanna HTTP níos éasca.

    Python
    self.client.post("/items/1", query_params={"action": "delete"})
    await self.async_client.post("/items/1", query_params={"action": "delete"})
    
  • Ceadaíonn an dearbhú nua:meth: .simpletestcase.assertNotInhtml tástáil nach bhfuil blúire HTML sa chraiste faigh HTML tugtha.

  • D'fhonn aonrú tástála a fhorfheidhmiú, ní cheadaítear naisc bunachar sonraí taobh istigh de snáitheanna a thuilleadh in:class: ~django.test.simpletestCase.

BailíochtóiríLink to this heading

  • Bailíonn an nua:class: ~django.core.validators.domainnameValidator ainmneacha fearainn, lena n-áirítear ainmneacha fearainn idirnáisiúnta. Tugann an fheidhm nua:func: ~django.core.validators.validate_domain_name sampla de:class: ~django.core.validators.domainnameValidator.

Athruithe neamh-chomhoiriúnacha ar ais i 5.1Link to this heading

django.contrib.gisLink to this heading

  • Baintear tacaíocht do PostGIS 2.5.

  • Baintear tacaíocht do PROJ <6.

  • Baintear tacaíocht do GDAL 2.4.

  • GeoIP2 no longer opens both city and country databases when a directory path is provided, preferring the city database, if it is available. The country database is a subset of the city database and both are not typically needed. If you require use of the country database when in the same directory as the city database, explicitly pass the country database path to the constructor.

Tacaíocht titim do MariaDB 10.4Link to this heading

Críochnaíonn tacaíocht suas srutha do MariaDB 10.4 i mí an Mheithimh 2024. Tacaíonn Django 5.1 le MariaDB 10.5 agus níos airde.

Tacaíocht titim do PostgreSQL 12Link to this heading

Críochnaíonn tacaíocht suas srutha do PostgreSQL 12 i mí na Samhna 2024. Tacaíonn Django 5.1 le PostgreSQL 13 agus níos airde.

IlghnéitheachLink to this heading

  • <div>D'fhonn inrochtaineacht a fheabhsú, déantar scagaire liosta athraithe an riaracháin a léiriú anois i gclib <nav> in ionad ```.

  • <div id="main">D'fhonn inrochtaineacht a fheabhsú, déantar buntásc an riaracháin a léiriú anois <footer><div>i gclib ```` in ionad ``, agus bogadh faoi bhun an ghné `.

  • <django.contrib.admin.InlineModelAdmin><details><summary>D'fhonn inrochtain <django.contrib.admin.ModelAdmin.fieldsets>eacht a fheabhsú, tá an giuirléid leathnaithe a úsáidtear le haghaidh: attr: ModelAdmin.FieldSets `agus:attr: `InlineModelAdmin.FieldSets, nuair a bhíonn ainm ag an tacar réimse agus úsáideann an rang collise, anois eilimintí agus ``.

  • Baintear an comhad JavaScript ``collise.js ``ós rud é nach bhfuil gá leis a thuilleadh ar shuíomh riaracháin Django.

  • SimpleTestCase.assertURLEqual() and assertInHTML() now add ": " to the msg_prefix. This is consistent with the behavior of other assertions.

  • django.utils.text.Truncator used by truncatechars_html and truncatewords_html template filters now uses html.parser.HTMLParser subclasses. This results in a more robust and faster operation, but there may be small differences in the output.

  • Baintear an fheidhm ``django.urls.converters.get_converter () ``neamhdhoiciméadaithe.

  • Méadaítear an leagan íosta tacaithe de SQLite ó 3.27.0 go 3.31.0.

  • FileField now raises a FieldError when saving a file without a name.

  • Ní ghlaofar ImageField.UPDATE_Dimension_Fields (force=True) ``a thuilleadh tar éis an íomhá a shábháil chuig stóráil. athraíonn do chúltaca stórála mhéid íomhánna, mheaitseálfaidh an ``width_field agus height_field leithead agus airde na híomhá.

  • Méadaítear an leagan íosta tacaithe de asgiref` ó 3.7.0 go 3.8.1.

  • To improve performance, the delete_selected admin action now uses QuerySet.bulk_create() when creating multiple LogEntry objects. As a result, pre_save and post_save signals for LogEntry are not sent when multiple objects are deleted via this admin action.

Gnéithe atá díscríofa i 5.1Link to this heading

IlghnéitheachLink to this heading

  • Tá na modhanna ModelAdmin.log_Deletion () ``agus `LogentryManager.log_action () a dhíchur. Ba chóir go gcuirfeadh fo-ranganna ModelAdmin.log_Deletions () ``agus ``LogentryManager.log_actions () a chur i bhfeidhm ina ionad.

  • Tá an fheidhm django.utils.itercompat.is_iterable () ``gan doiciméadú agus an modúl ``django.utils.itercompat a dhíchur. Úsáid ``isinstance (..., Collections.abc.iterable) ``ina ionad.

  • Tá an modh ``django.contrib.gis.geoip2.geoip2.coords () ``díluaite. Úsáid ``django.contrib.gis.geoip2.geoip2.lon_lat () ``ina ionad.

  • Tá an modh ``Django.contrib.gis.geoip2.geoip2.open () ``díluaite. Úsáid an tógálaí: class: ~django.contrib.gis.geoip2.geoip2 ina ionad.

  • Tá argóintí seasaimh a chur chuig: meth: .model.save agus:meth: .model.asave a dhíchur i bhfabhar argóintí eochairfhocal amháin.

  • Tá socrú django.contrib.gis.gdal.ogrgeometry.coord_dim díluaite. Úsáid: Meth: ~django.contrib.gis.gdal.ogrgeometry.set_3d ina ionad.

  • Tá tiontairí atá ann cheana le ``django.urls.register_converter () ``díluasaithe.

  • Tá an argóint eochairfhocal seiceáil ``de `CheckConstraint a dhíchur i bhfabhar coinníoll.

  • Tá an maoin OS_OPEN_FLAGS neamhdhoiciméadaithe de:class: ~django.core.files.storage.filesystemStorage a dhíchur. Chun comhaid a fhorscríobh i stóráil a cheadú, socraigh an rogha nua:attr: ~django.core.files.storage.filesystemStorage.allow_overwrite go True ina ionad.

  • Tá an modh get_cache_name () ``de `FieldCachemixin a dhíchur i bhfabhar na maoin taiscéadaithe cache_name.

Gnéithe bainte i 5.1Link to this heading

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

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

  • Baintear an modh ``BaseUserManager.Make_Random_Password () ``.

  • Baintear rogha Meta.index_Together an tsamhail.

  • Baintear an scagaire teimpléad ``long_is ``.

  • Baintear na Django.Contrib.Auth.Hashers.Sha1PasswordHasher`, Django.Contrib.Auth.Hashers.UnsaltedSha1PasswordHasher`, agus Django.Contrib.Auth.Hashers.UnsaltedMd5PasswordHasher.

  • Baintear an tsamhail Django.contrib.postgres.fields.cicharfield, Django.contrib.postgres.fields.ciemailfield`, agus Django.contrib.postgres.fields.citextfield, seachas tacaíocht i imirce stairiúla.

  • Baintear an meascán Django.contrib.postgres.fields.citext.

  • Baintear na tréithe map_width agus map_height de BasegeometryWidget`.

  • Baintear an modh ``SimpletestCase.assertFormSetError () ``.

  • Baintear an modh ``TransactionTestCase.assertQuerySetEqual () ``.

  • Baintear tacaíocht chun litríochtaí teaghrán ionchódaithe JSON a chur chuig JSONField agus cuardaigh agus nathanna gaolmhara.

  • Baintear tacaíocht chun argóintí seasaimh a chur chuig Signer agus TimeStampSigner.

  • Baintear na socruithe DEFAULT_FILE_STORAGE agus STATICFILES_STORAGE.

  • Baintear an fheidhm ``django.core.files.storage.get_storage_class () ``.