Nótaí scaoilte Django 3.1Link to this heading

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 PythonLink to this heading

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.1Link to this heading

Tuairimí asincrónacha agus tacaíocht lár-earraíLink to this heading

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:

Code
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í tacaitheLink to this heading

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

Code
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_ALGORITHMLink to this heading

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éitheLink to this heading

django.contrib.adminLink to this heading

  • 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.authLink to this heading

  • 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() now uses the SHA-256 hashing algorithm. Support for user sessions that use the old hashing algorithm remains until Django 4.0.

django.contrib.contenttypesLink to this heading

  • 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.gisLink to this heading

  • relate lookup is now supported on MariaDB.

  • Cuireadh an maoin: attr: .linearring.is_counterclockwise leis.

  • 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.humanizeLink to this heading

  • intword template filter now supports negative integers.

django.contrib.postgresLink to this heading

  • 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() now supports ArrayField and 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 now supports SmallAutoField, AutoField, BigAutoField, SmallIntegerField, and DecimalField.

  • 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 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.sessionsLink to this heading

  • 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.staticfilesLink to this heading

  • Tacaíonn an socrú: SETTING: STATICFILES_DIRS anois:class: Pathlib.path.

CacheLink to this heading

  • 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() now returns True if the key was successfully deleted, False otherwise.

CSRFLink to this heading

  • 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íomhphostLink to this heading

  • <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áideLink to this heading

  • 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 ComhadLink to this heading

  • Tacaíonn modh ``FilesystemStorage.save () ``anois:class: Pathlib.path.

  • FileField and 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.

FoirmeachaLink to this heading

  • ModelChoiceIterator, used by ModelChoiceField and ModelMultipleChoiceField, now uses ModelChoiceIteratorValue that can be used by widgets to access model instances. See Roghanna caidrimh athraitheacha for details.

  • 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 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 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úLink to this heading

  • 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íochtaLink to this heading

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

SamhlaLink to this heading

  • 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() 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 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ú.

LeathanaighLink to this heading

  • Paginator can now be iterated over to yield its pages.

Iarrataí agus FreagraíLink to this heading

  • 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() and 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áilLink to this heading

  • 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éidLink to this heading

  • 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álachaLink to this heading

  • 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 can now discard output for passing tests using the 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 teardown is now faster on MySQL due to flush command improvements. As a side effect the latter doesn't automatically reset sequences on teardown anymore. Enable TransactionTestCase.reset_sequences if your tests require this feature.

URLannaLink to this heading

  • Path converters can now raise ValueError in to_url() to indicate no match when reversing URLs.

FóntaisLink to this heading

IlghnéitheachLink to this heading

  • 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.1Link to this heading

API cúltaca bunachar sonraíLink to this heading

Déanann an rannán seo cur síos ar athruithe a d’fhéadfadh a bheith ag teastáil ar dhroim bhunachar sonraí tríú páirtí.

  • 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.1Link to this heading

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.adminLink to this heading

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 150Link to this heading

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:

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

Code
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éitheachLink to this heading

  • 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 agus 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 no longer adds the ETag header to responses with an empty content.

  • django.utils.decorators.classproperty() decorator is made public and moved to django.utils.functional.classproperty.

  • floatformat template filter now outputs (positive) 0 for negative numbers which round to zero.

  • Meta.ordering and Meta.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 now defaults to 'same-origin'. See the What's New Security section 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 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, used by 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, used by ModelChoiceField and ModelMultipleChoiceField, now yields 2-tuple choices containing 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 attribute instead.

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

PostgreSQL JsonfieldLink to this heading

<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 JSONFields, KeyTransform`, agus KeyTextTransform` nua a úsáid ar gach cúltaca bunachar sonraí tacaithe.

IlghnéitheachLink to this heading

  • 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>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) ``.

  • ``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.1Link to this heading

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.