Nótaí scaoilte Django 1.11Link to this heading

4 Aibreán, 2017

Fáilte go dtí Django 1.11!

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

<Long-term support release>Ainmnítear Django 1.11 mar a: téarma: `scaoileadh tacaíochta fadtéarmach `. Gheobhaidh sé nuashonruithe slándála ar feadh trí bliana ar a laghad tar éis a scaoilte Beidh deireadh le tacaíocht don LTS roimhe seo, Django 1.8, i mí Aibreáin 2018.

Comhoiriúnacht PythonLink to this heading

Éilíonn Django 1.11 Python 2.7, 3.4, 3.5, 3.6, nó 3.7 (amhail 1.11.17). Molaimid** go hard** agus ní thacaímid go hoifigiúil ach leis an scaoileadh is déanaí de gach sraith.

Is é an tsraith Django 1.11.x an ceann deireanach a thacaíonn le Python 2. Ní thacóidh an chéad eisiúint mhór eile, Django 2.0, ach le Python 3.4+.

Ní bhíonn rabhaidh dhíspreagtha ard a thuilleadh de réir réamhshocLink to this heading

Murab ionann agus leaganacha níos sine de Django, ní thaispeántar rabhaidh diúltaithe Django féin de réir réamhshocraithe a thuilleadh. Tá sé seo ag teacht le hiompar réamhshocraithe Python.

Ligeann an t-athrú seo d'aipeanna tríú páirtí tacú le Django 1.11 LTS agus Django 1.8 LTS araon gan cód a chur leis chun rabhaidh díghrádaithe a sheachaint.

Tar éis Django 2.0 a scaoileadh, molaimid go scaoilfidh údair aip tríú páirtí tacaíocht do gach leagan de Django roimh 1.11. Ag an am sin, ba cheart go mbeadh tú in ann tástálacha do phacáiste a reáchtáil ag baint úsáide as python -Wd` ionas go mbeidh rabhaidh dífhabhtaithe le feiceáil. Tar éis duit na socruithe rabhaidh díghrádaithe a dhéanamh, ba chóir go mbeadh d'aip comhoiriúnach le Django 2.0.

Cad atá nua i Django 1.11Link to this heading

Innéacsanna samhail rang-bhunaitheLink to this heading

Tá ranganna sa mhodúl nua:mod: django.db.models.indexes a éascaíonn innéacsanna bunachar sonraí a chruthú. <django.db.models.Options.indexes>Cuirtear innéacsanna le samhlacha ag baint úsáide as an rogha: attr: `Meta.Indexes `.

Cruthaíonn an rang:Class: ~django.db.models.index innéacs b-crann, amhail is dá n-úsáide:attr: ~django.db.models.field.db_index ar an réimse samhail nó index_together ``ar an rang `Meta samhail. Is féidir é a fho-aicmiú chun tacú le cineálacha innéacs éagsúla, mar shampla:class: ~django.contrib.postgres.indexes.ginIndex. Ligeann sé freisin an t-ord (ASC/DESC) a shainiú do cholúin an innéacs.

Rindreáil giuirléid bunaithe ar theimpléadLink to this heading

Chun giuirléidí a shaincheapadh a éascú, déantar rindreáil giuirléid foirme anois ag baint úsáide as an gcóras teimplé Féach: doc: /ref/foirme/renderers.

<template-widget-incompatibilities-1-11>B'fhéidir go mbeidh ort aon ghuirléidí saincheaptha atá scríofa agat a choigeartú le haghaidh cúpla athrú: ref: `athruithe neamh-chomhoiriúnacha ar ais `.

Nathanna SubcheisteLink to this heading

Ceadaíonn na nathanna bunachar sonraí nua:class: ~django.db.models.subquery agus:class: ~django.db.models.exists fo-cheisteanna follasacha a chruthú. Féadfaidh fo-cheisteanna tagairt a dhéanamh do réimsí ón tacar ceisteanna seachtrach ag baint úsáide as an aic:class: ~Django.db.Models.OuterRef.

MionghnéitheLink to this heading

django.contrib.adminLink to this heading

  • ModelAdmin.date_hierarchy can now reference fields across relations.

  • Ligeann an crúca nua:meth: `ModelAdmin.get_Exclude () <django.contrib.admin.ModelAdmin.get_exclude>`na réimsí eisiata a shonrú bunaithe ar an iarratas nó an tsamhail.

  • Is féidir an teimpléad popup_response.html a shárú anois in aghaidh an aip, in aghaidh an tsamhail, nó tríd an tréith: :attr: .modeladmin.popup_response_template a shocrú.

django.contrib.authLink to this heading

  • Méadaítear 20% an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2.

  • Cuireann tuairimí rang-bhunaithe an:class: ~django.contrib.auth.views.loginView agus:class: ~django.contrib.auth.views.logoutView in ionad na tuairimí bunaithe ar fheidhm ``login () ``agus ``logout () `.

  • The:Class: ~django.contrib.auth.views.passwordChangeView, :class: ~django.contrib.auth.views.paswordChangeDoneView, :class: ~django.contrib.auth.views.passwordResetView, :class: ~django.contrib.auth.views.wordDresetView , :class: `~django.contrib.auth.views.PasswordResetConfirmView, agus:class: ~django.contrib.auth.views.PasswordResetCompleteView athsholáthraíonn tuairimí aicmbunaithe ar an password_change () `, password_change (), wordpass_reset ()`, password_reset_done () ``, `password_reset_confirm (), agus ``password_reset_complete () `` tuairimí bunaithe ar fheidhm.

  • Ceadaíonn an tréith nua post_reset_login d':class: ~django.contrib.auth.views.passwordResetConfirmView logáil isteach go huathoibríoch ar úsáideoir tar éis athshocrú pasfhocal rathúil. Má tá go leor AUTHENTICATION_BACKENDS` cumraithe agat, bain úsáid as an tréith ``post_reset_login_backend chun cén ceann atá le húsáid a roghnú.

  • Chun an fhéidearthacht comhartha athshocraithe pasfhocal a sceitheadh trí cheanntásc HTTP Referer a sheachaint (mar shampla, má chuimsíonn an leathanach athshocraithe tagairt do CSS nó JavaScript arna óstáil ar fhearann eile), stóráilíonn an:class: ~django.contrib.auth.views.PasswordResetConfirmView (ach ní an `password_reset_confirm () `amharc feidhm-bhunaithe) treoraíonn sé féin chun an fhoirm athraithe pasfhocal a chur i láthair don úsáideoir gan an comhartha san URL.

  • update_session_auth_hash() now rotates the session key to allow a password change to invalidate stolen session cookies.

  • Ceadaíonn an tréith nua success_url_allowed_hosts d':class: ~django.contrib.auth.views.loginView agus:class: ~django.contrib.auth.views.logoutView sraith óstach atá sábháilte le hathreorú tar éis logáil isteach agus logáil amach a shonrú.

  • Breiseadh bailíochtóirí pasfhocal help_text chuig:class: ~django.contrib.auth.forms.userCreationForm.

  • Cuirtear an HttpRequest` anois chuig:func: ~django.contrib.auth.autenticate a chuireann chuig an gcúltaca fíordheimhnithe é ina dhiaidh sin má ghlacann sé le argóint request.

  • Faigheann an comhartha:func: ~django.contrib.auth.signals.user_login_failed argóint iarrat anois.

  • PasswordResetForm supports custom user models that use an email field named something other than 'email'. Set CustomUser.EMAIL_FIELD to the name of the field.

  • get_user_model() can now be called at import time, even in modules that define models.

django.contrib.contenttypesLink to this heading

  • Nuair a bhraitear cineálacha ábhar seasta san ordú:djadmin: remove_stale_contenttypes, tá liosta de rudaí gaolmhara ann anois mar Auth.Permission`s a scriosfar freisin. Roimhe seo, níor liostaíodh ach na cineálacha ábhair (agus bhí an pras seo tar éis imirce seachas in ordú ar leithligh).

django.contrib.gisLink to this heading

  • Ceadaíonn na modhanna nua:meth: .geosgeometry.from_GML agus:meth: .ogrgeometry.from_GML geoiméadraí a chruthú ó GML.

  • Tacaíocht bhreise don chuardach: lookup: dwithin ar SpatiaLite.

  • Oibríonn an fheidhm: Class: ~django.contrib.gis.db.models.functions.Area, :class: ~django.contrib.gis.db.models.functions.distance feidhm, agus cuardaigh achair anois le comhordanáidí geodéiseacha ar Spatialite.

  • Úsáideann na giuirléidí foirmeacha bunaithe ar OpenLayers anois OpenLayers.js ``ó https://cdnjs.cloudflare.com atá níos oiriúnaí le húsáid táirgeachta an sean-fhoinse https://openlayers.org/ ``. Déantar iad a nuashonrú freisin chun OpenLayers 3 a úsáid.

  • Is féidir le himirce PostGIS toisí réimse a athrú anois.

  • Cuireadh an cumas leis na paraiméadair size ``, `shape, agus offset a rith agus rudaí:class: ~django.contrib.gis.gdal.gdalRaster á chruthú.

  • Cuirtear tacaíocht Spatialite leis an bhfeidhm: class: ~django.contrib.gis.db.models.functions.isValid, :class: ~django.contrib.gis.db.models.functions.makeValid feidhm, agus:lookup: isvalid cuardach.

  • Cuireadh tacaíocht Oracle leis an bhfeidhm: class: ~django.contrib.gis.db.models.functions.asgml, :class: ~django.contrib.gis.db.models.functions.boundingCircle feidhm, :class: ~django.contrib.db.models.functions.isvalid feidhm, agus:lookup: validis.

django.contrib.postgresLink to this heading

  • Cinneann an argóint nua distint do:class: ~django.contrib.postgres.aggregates.stringagg an mbeidh luachanna comhtháite ar leith.

  • Ceadaíonn na ranganna nua:class: ~django.contrib.postgres.indexes.ginIndex agus:class: ~django.contrib.postgres.indexes.brinIndex innéacsanna GIN agus BRIN` a chruthú sa bhunachar sonraí.

  • Glacann django.contrib.postgres.fields.jsonfield le paraiméadar nua encoder chun rang saincheaptha a shonrú chun cineálacha sonraí nach dtacaíonn an t-ionchódóir caighdeánach a ionchódú.

  • Ligeann an t-oibríocht imirce nua citext agus:class: ~django.contrib.postgres.operations.CiteXtExtension síneadh citext PostgreSQL a úsáid le haghaidh cuardaigh cás-neamh-íogair. Cuirtear trí réimse ar fáil: Cicharfield`, Ciemailfield`, agus CitextField.

  • Ceadaíonn an nua:class: ~django.contrib.postgres.aggregates.jsonBagg luachanna a chomhiomlánú mar eagar JSON.

  • Ceadaíonn an: Class: ~django.contrib.postgres.fields.hStorefield (réimse samhail) agus:class: ~django.contrib.postgres.forms.hStorefield (réimse foirme) luachanna null a stóráil.

CacheLink to this heading

  • Cuireann cúltaca Memcached anois ábhar: socrú: `OPTIONS <CACHES-OPTIONS>`mar argóintí eochairfhocal chuig tógálaí na gcliant, rud a cheadaíonn rialú níos airde ar iompar cliant. Féach an doiciméad:ref: `cache argóintí <cache_arguments>`le haghaidh samplaí.

  • Ligeann cúltaca Memcached anois freastalaithe iolracha a shainiú mar shreang teoranta le camóg in:socrú: LOCATION <CACHES-LOCATION>, ar mhaithe le seirbhísí tríú páirtí a úsáideann teaghráin den sórt sin in athróga comhshaoil.

CSRFLink to this heading

  • Cuireadh an socrú: socrú: CSRF_USE_SESSIONS leis chun an comhartha CSRF a stóráil i seisiún an úsáideora seachas i bhfianán.

Cúltaca bunachar sonraíLink to this heading

  • Cuireadh an argóint skip_locked` leis la:meth: .queryset.select_for_update () `ar PostgreSQL 9.5+ agus Oracle chun ceisteanna a fhorghníomhú le ``FOR UPDATE SKIP LOCKED`.

  • Cuireadh an socrú: socrú: `TEST ['TEMPLATE'] <TEST_TEMPLATE>`leis chun ligean d'úsáideoirí PostgreSQL teimpléad a shonrú chun an bunachar sonraí tástála a chruthú.

  • QuerySet.iterator() úsáideann cúrsóirí taobh an fhreastalaí anois ar PostgreSQL. Aistríonn an ghné seo cuid d’ualach cuimhne an oibrí (a úsáidtear chun torthaí fiosrúcháin a choinneáil) chuig an mbunachar sonraí agus d’fhéadfadh sé úsáid chuimhne an bhunachair shonraí a mhéadú.

  • <mysql-isolation-level>Cuireadh tacaíocht MySQL leis an rogha `isolation_level' in:setting: OPTIONS chun ligean an: ref: `leibhéal aonrú idirbheart `a shonrú. Chun caillteanas sonraí féideartha a sheachaint, moltar aistriú ó leibhéal réamhshocraithe MySQL, inathsheolta, go léamh tiomanta.

  • Tacaíocht bhreise do ``CX_Oracle ``5.3.

RíomhphostLink to this heading

  • Cuireadh an socrú: leagan: EMAIL_USE_LOCALTIME leis chun ceannteidil dáta SMTP a sheoladh sa chrios ama áitiúil seachas i UTC.

  • Tagann emailmessage.attachment () ``agus ``attach_file () ar ais anois go cineál MIME: mimetype: application/octet-stream nuair a shonraítear ábhar dénártha nach féidir a dhíchódú mar UTF-8 le haghaidh a:mimetype: text/* ceangaltán.

Stóráil ComhadLink to this heading

  • Chun é a dhéanamh infhilleadh ag: class: IO.TextioWrapper, :class: ~django.core.files.file anois tá na modhanna inléiteach () ``, `scríofa (), agus ``searchable () ``.

FoirmeachaLink to this heading

  • An tréith nua empty_value ar:class: ~django.forms.charfield, :class: ~django.forms.emailfield, :class: ~django.forms.regexfield, :class: ~django.forms.slugfield, agus:class: ~django.forms.URLField Ligeann ELD` an luach Python le húsáid a shonrú chun “folamh” a léiriú.

  • <django.forms.Form.get_initial_for_field>Tugann an modh nua:meth: `form.get_initial_for_field () `sonraí tosaigh ar ais do réimse foirme.

IdirnáisiúnúLink to this heading

  • Tacaíonn formáidiú uimhreacha agus an socrú: NUMBER_GROUPING le grúpáil dhigit neamh-aonfhoirmeach.

Orduithe BainistíochtaLink to this heading

  • Ceadaíonn an rogha nua:option: loaddata --exclude samhlacha agus aipeanna a eisiamh agus sonraí á luchtú ó daingneáin.

  • Ligeann an rogha nua:option: diffsettings --default modúl socruithe seachas socruithe réamhshocraithe Django a shonrú chun comparáid a dhéanamh ina gcoinne.

  • Cuireann argóintí app_label` teorainn anois leis an aschur: `showmigrations --plan.

ImirceLink to this heading

  • Tacaíocht bhreise le haghaidh sraitheadh rudaí ``UUID.UUID ``.

SamhlaLink to this heading

  • <django.db.models.query.QuerySet.update_or_create>Cuireadh tacaíocht le haghaidh luachanna inghlaonta san argóint defaults de:meth: queryset.update_or_create () `agus:meth: `~django.db.models.query.queryset.get_or_create.

  • ImageField now has a default validate_image_file_extension validator. (This validator moved to the form field in Django 1.11.2.)

  • Tacaíocht bhreise le haghaidh gearradh ama chuig feidhmeanna: class: ~Django.db.Models.Functions.trunc.

  • Chuir an fheidhm: class: ~django.db.models.functions.extractWeek leis chun an tseachtain a bhaint ó:class: ~django.db.models.dateField agus:class: ~django.db.models.DateTimeField agus nochtaigh sé tríd an cuardach: seachtain.

  • Chuir an fheidhme:class: ~django.db.models.functions.truncTime leis an bhfeidhm chuig truncate:class: ~Django.db.Models.DateTimeField lena chomhpháirt ama agus nochtaigh sé tríd an cuardach: lookup: time.

  • Tacaíocht bhreise le haghaidh abairtí in:meth: .queryset.values agus:meth: ~.queryset.values_list.

  • Tacaíocht bhreise le haghaidh abairtí fiosrúcháin ar chuardaigh a thógann go leor argóintí, mar shampla raon `.

  • Is féidir leat an rogha Unique=True a úsáid anois le:class: ~django.db.models.filefield.

  • <django.db.models.Expression.asc>Cuireadh na paraiméadair nulls_first agus nulls_last chuig: class: Expression.asc () `agus:meth: `~django.db.Models.Expression.desc chun ordú luachanna null a rialú.

  • <using-f-expressions-in-filters>Ceadaíonn an abairt nua F bitleftshift () ``agus ``bitrightshift () modhanna: ref: `oibríochtaí aistrithe bitwise `.

  • Cuireadh leis: Meth: .QuerySet.Union, :meth: ~.QuerySet.Intersection, agus:meth: ~.querySet.Difference.

Iarrataí agus FreagraíLink to this heading

  • <django.http.QueryDict.fromkeys>Cuireadh leis: Meth: `Querydict.fromKeys () `.

  • CommonMiddleware now sets the Content-Length response header for non-streaming responses.

  • Cuireadh an socrú:setting: SECURE_HSTS_PRELOAD leis chun ligean an treoir ``réamh-load` a chur leis an gceannteideal ``Strict-Transport-Security ``.

  • ConditionalGetMiddleware now adds the ETag header to responses.

SraitheadhLink to this heading

  • Ligeann an tréith nua ``Django.Core.Serializers.Base.Serializer.Stream_Class ``d'fho-aicmí an sruth réamhshocraithe a shaincheapadh.

  • Is féidir an t-ionchódóir a úsáideann an: ref: JSON serializer <serialization-formats-json>`a shaincheapadh anois trí argóint eochairfhocal ``cls` a chur chuig an bhfeidhm ``serializers.serialize () ``.

  • DjangoJSONEncoder now serializes timedelta objects (used by DurationField).

TeimpléidLink to this heading

  • mark_safe() can now be used as a decorator.

  • <TEMPLATES-OPTIONS>Tacaíonn cúltaca teimpléad:class: ~django.template.backends.jinja2.jinja2 le próiseálaithe comhthéacs anois tríd an rogha ``'context_processors'` a shocrú in:setting: OPTION.

  • Tugann an clibe:ttag: athghrúpa namedtuples anois in ionad foclóirí ionas gur féidir leat an réad grúpa a dhíphacáil go díreach i lúb, m.sh. {% for grouper, liosta i athghrúpáilte%}.

  • Cuireadh clib teimpléad a:ttag: resetcicle leis chun seicheamh an chlib teimpléad: ttag: timthriall a athshocrú.

  • <django.template.loaders.filesystem.Loader>Is féidir leat eolairí ar leith a shonrú anois le haghaidh áirithe: class: `Filesystem.loader `.

TástálachaLink to this heading

  • Cuireadh leis: Meth: .DiscoverRunner.get_Test_Runner_Kwargs chun ligean na hargóintí eochairfhocal a chuirtear chuig an rádálaí tástála a shaincheapadh.

  • Cuireadh an rogha: rogha: test --debug-mode leis chun cabhrú le teipeanna tástála a réiteach tríd an socrú: socrú: DEBUG go True`.

  • Déanann na feidhmeanna nua:func: django.test.utils.setup_databases (bogadh ó django.test.runner) agus:func: ~django.test.utils.teardown_databases níos éasca reathaithe tástála saincheaptha a thógáil.

  • Tacaíocht bhreise le haghaidh: meth: python: unittest.testcase.subtest agus an rogha: 'test --parallel` á úsáid agat.

  • Ritheann DiscoverRunner seiceálacha an chórais anois ag tús rith tástála. Athraigh an modh:meth: .DiscoverRunner.run_checks más mian leat é sin a dhíchumasú.

BailíochtóiríLink to this heading

  • Cuireadh leis: Class: ~django.core.validators.fileExtensionValidator chun síntí comhaid a bhailíochtú agus:data: ~django.core.validators.validate_image_file_extension chun comhaid íomhá a bhailíochtú.

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

django.contrib.gisLink to this heading

  • Chun an bunachar cóid a shimpliú agus toisc go bhfuil sé níos éasca a shuiteáil ná nuair a scaoileadh contrib.gis den chéad uair, is spleáchas riachtanach é: ref: gdalbuild anois do GeoDjango. I leaganacha níos sine, ní theastaíonn sé ach le haghaidh SQLite.

  • Baintear contrib.gis.maps toisc go ndéanann sé comhéadan le leagan ar scor de API Google Maps agus is cosúil nach bhfuil sé cothabháilte. <14284>Má tá tú ag úsáid é, :ticket: `Cuir in iúl dúinn `.

  • Déanann an t-oibreoir comhionannais Geosgeometry comparáid anois idir SRID.

  • Úsáideann na giuirléidí foirmeacha bunaithe ar OpenLayers OpenLayers 3 anois, agus tá na teimpléid gis/openlayers.html` agus gis/openlayers-osm.html nuashonraithe. Seiceáil do thionscadal má dhéanann tú na giuirléidí seo a fho-rangú nó má leathnaíonn Chomh maith leis sin, oibríonn na giuirléidí nua beagán difriúil ná na seancinn. In ionad uirlisí uirlisí a úsáid sa ghuirléid, cliceáil tú chun tarraingt, cliceáil agus tarraingt chun an léarscáil a bhogadh, agus cliceáil agus tarraingt point/beart/cúinne chun é a bhogadh.

  • Titeann tacaíocht do SpatiaLite <4.0.

  • Titear tacaíocht do GDAL 1.7 agus 1.8.

  • Úsáideann na giuirléidí in contrib.gis.forms.widgets agus OpenLayersWidget an riaracháin an:doc: foirm rindreála API seachas ``loader.render_to_string () </ref/forms/renderers> `. Má tá teimpléad giuirléid saincheaptha á úsáid agat, beidh ort a bheith cinnte gur féidir le do rindreoir foirme é a aimsiú. Mar shampla, d'fhéadfá an renderer: class: `~django.forms.renderers.templateSetting a úsáid.

django.contrib.staticfilesLink to this heading

  • D'fhéadfadh go dteipeann ar collectstatic` anois le linn iar-phróiseála agus stóráil comhaid statacha hashed á n-úsáid má tá lúb tagartha ann (m.sh. `foo.css'` tagairtí ``bar.css' a thagraíonn do ``foo.css') nó má tá an slabhra comhaid eile ró-dhomhain le réiteach i roinnt pasanna. Sa chás deireanach sin, méadaigh líon na bpasanna ag baint úsáidea:attr: `.manifestStaticFilesStorage.MAX_POST_PROCESS_PASES.

  • Agus ManifestStaticFilesStorage á n-úsáid agat, ardaíonn comhaid statacha nach bhfaightear sa léiriú ag an tréimhse ValueError anois in ionad cosán gan athrú a thabhairt ar ais. Is féidir leat filleadh ar an sean-iompar trí shocrú: attr: .manifestStaticFilesStorage.manifest_strict go False.

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

  • Cuirtear an modh DatabaseOperations.time_trunc_sql () leis chun tacú le trongáil Timefield`. Glacann le hargóintí ``lookup_type agus field_name` agus filleann sé an SQL cuí ar ais chun an réimse ama tugtha field_name a ghearradh chuig réad ama nach bhfuil ach an sainiúlacht ar leith air. Is féidir leis an argóint lookup_type a bheith ina `uair ', nóiméad'`, ```soicind.

  • Cuirtear an modh DatabaseOperations.DateTime_Cast_Time_SQL () `leis chun tacú leis an cuardach: lookup: `time`. Glacann le hargóintí ``field_name agus tzname agus filleann sé an SQL riachtanach chun luach dáta-ama a chaitheamh go luach ama.

  • Chun tacaíocht FOR UPDATE SKIP LOCKED a chumasú, socraigh databaseFeatures.HAS_SELECT_FOR_UPDATE_SKIP_LOCKED = True.

  • Sonraíonn an tréith nua DatabaseFeatures.supports_index_column_ordering an gceadaíonn bunachar sonraí ordú a shainiú do cholúin in innéacsanna. Is é an luach réamhshocraithe True agus ba chóir go mbeadh eochair 'ordaithe '``i ngach ceann de na foclóirí ar ais le liosta luachanna ``ASC'` agus/nó ``DESC agus/nó luachanna DESC a fhreagraíonn d'ordú gach colún san innéacs.

  • inspectdb no longer calls DatabaseIntrospection.get_indexes() which is deprecated. Custom database backends should ensure all types of indexes are returned by DatabaseIntrospection.get_constraints().

  • Athainmnigh an ghné ignores_quoted_identificfier_case` go ignores_table_name_case` chun léiriú níos cruinne an chaoi a n-úsáidtear é.

  • Cuirtear an argóint eochairfhocal ainm ``leis an modh `DatabaseWrapper.create_cursor (self, name=None) chun cúrsaí taobh an fhreastalaí a úsáid ar chúltaca a thacaíonn leis a cheadú.

Tacaíocht titim do PostgreSQL 9.2 agus PostGIS 2.0Link to this heading

Críochnaíonn tacaíocht suas srutha do PostgreSQL 9.2 i Meán Fómhair 2017. Mar thoradh air sin, socraíonn Django 1.11 PostgreSQL 9.3 mar an leagan íosta a thacaíonn sé go hoifigiúil.

Baintear tacaíocht do PostGIS 2.0 freisin mar is é PostgreSQL 9.2 an leagan deireanach chun tacú leis.

Chomh maith leis sin, méadaítear an leagan íosta tacaithe de psycopg2 ó 2.4.5 go 2.5.4.

Ceanglaíonn Liveservertestcase le calafort nialasLink to this heading

Seachas raon calafoirt a ghlacadh agus athrá chun calafort saor in aisce a aimsiú, ceanglaíonn Liveservertestcase le calafort nialas agus braitheann sé ar an gcóras oibriúcháin chun calafort saor in aisce a shannadh. Ní úsáidtear an t-athróg timpeallachta DJANGO_LIVE_TEST_SERVER_ADDRESS a thuilleadh, agus toisc nach n-úsáidtear é a thuilleadh freisin, baintear an rogha manage.py test --liveserver.

Más gá duit LiveserVertestCase a cheangal le calafort ar leith, bain úsáid as an tréith ```port ``cuireadh i Django 1.11.2.

Cosaint i gcoinne atreoruithe neamhchinnte i:mod: tuairimí django.contrib.auth agus i18nLink to this heading

Cosnaíonn LoginView, LogoutView` (agus na coibhéisí bunaithe ar fheidhm atá díluaite), agus:func: ~django.views.i18n.set_language úsáideoirí ó bheith atreoraithe chuig URLanna next neamh-HTTPS nuair a bhíonn an aip ag rith thar HTTPS.

QuerySet.get_or_create () ``agus ``update_or_create () argóintí a bhailíochtúLink to this heading

Chun clóscríobh a chosc ó rith go ciúin, :meth: ~django.db.models.query.queryset.get_or_create agus:meth: ~django.db.models.queryset.update_or_create seiceáil gur réimsí samhail iad a gcuid argóintí. Níor chóir go mbeadh sé seo comhoiriúnach ar chúl ach amháin sa bhfíric go bhféadfadh sé fabht i do thionscadal a nochtadh.

Is spleáchas riachtanach é pytz agus tacaíocht do `settings.TIME_ZONE = None ``baintearLink to this heading

Chun láimhseáil crios ama Django a shimpliú, is spleáchas riachtanach anois é pytz. Tá sé suiteáilte go huathoibríoch mar aon le Django.

Baintear tacaíocht do settings.time_zone = None ``toisc nach n-úsáidtear an t-iompar go coitianta agus tá sé úsáideach go cinnte. Más mian leat an crios ama a bhrath go huathoibríoch bunaithe ar chrios ama an chórais, is féidir leat úsáid a úsáid:pypi: `tzlocal:

Code
from tzlocal import get_localzone

TIME_ZONE = get_localzone().zone

Oibríonn sé seo cosúil le settings.time_zone = None ``ach amháin go socraíonn ``os.environ ['TZ'] freisin. Cuir in iúl dúinn `__ má < https://groups.google.com/g/django-developers/c/OAV3FChfuPM/discussion> tá cás úsáide ann ina bhfaighidh tú nach féidir leat do chód a oiriúnú chun ``TIME_ZONE` a shocrú.

Athruithe HTML i dteimpléid riaracháinLink to this heading

Cuirtear clib <p class="help">```` in ionad <div> chun liostaí a áireamh laistigh de théacs cabhrach.

<div class="readonly">Tá réimsí léite amháin fillte i ...</div> <p>``in ionad...</p> ``chun aon chineál HTML a cheadú mar ábhar an réimse.

Athruithe mar gheall ar rindreáil giuirléid bunaithe ar theimpléad a thabhairt isteachLink to this heading

Baintear roinnt ranganna neamhdhoiciméadaithe i django.forms.widgets:

  • Subwidget

  • RendererMixin, RoghiceFieldRenderer`, RadioFieldRender`, CheckboxFieldRender`

  • RoiceInput, RadioChoiceInput`, CheckboxChoiceInput`

Baintear an modh ``Select.render_option () ``neamhdhoiciméadaithe.

Baintear an modh Widget.format_output(). Úsáid teimpléad giuirléid saincheaptha ina ionad sin.

Tá roinnt luachanna giuirléid, mar shampla roghanna `, log <select>ánaithe anois ``settings.use_l10n=true. D'fhéadfá filleadh ar an sean-iompar le teimpléid giuirléid saincheaptha a úsáideann an chlib teimpléad:ttag: localize chun logánú a mhúchadh.

``Django.Template.Backends.Django.Template.render () ``cosc ar chomhthéacs neamh-dictLink to this heading

Le haghaidh comhoiriúnacht le hinnill teimpléad iolracha, caithfidh django.template.backends.django.template.render () ``(ar ais ó APIs luchtaire teimpléad ardleibhéil mar ``loader.get_template ()) foclóir comhthéacs a fháil seachas Context nó requestContext`. Má bhí tú ag rith ceachtar den dá rang, pas foclóir ina ionad sin - tá sé sin ag luí ar ais le leaganacha níos sine de Django.

Athruithe stáit samhail in oibríochtaí imirceLink to this heading

Chun luas imirce a chur i bhfeidhm a fheabhsú, cuirtear moill ar rindreáil samhlacha gaolmhara go dtí go ndéanfar oibríocht a theastaíonn iad (m.sh. Runpython`). <writing-your-own-migration-operation>Má tá oibríocht saincheaptha agat a oibríonn le ranganna samhail nó cásanna samhail ón argóint from_state i database_forwards () ``nó `database_backwards ()`, ní mór duit stáit samhail a rinneadh ag baint úsáide as an modh ``clear_delayed_apps_cache () ``mar a thuairiscítear in:ref: `scríobh d'oibríocht imirce féin `.

Cúrsóirí taobh an fhreastalaí ar PostgreSQLLink to this heading

Cuireann an t-athrú chun déanaime:meth: .queryset.iterator () `úsáid cúrsaí taobh an fhreastalaí ar PostgreSQL cosc ar Django a rith le PGBouncer i mód comhionannaithe idirbheart. <DATABASE-DISABLE_SERVER_SIDE_CURSORS>Chun é sin a íoslódáil, bain úsáid as an socrú:setting: `DISABLE_SERVER_SIDE_CURSORS `(curtha leis i Django 1.11.1) in:setting: `DATABASES.

Féach:ref: transaction-pooling-server-side-cursors le haghaidh tuilleadh plé.

IlghnéitheachLink to this heading

  • <django.utils.feedgenerator.SyndicationFeed.latest_post_date>Mura bhfuil tréith pubdate nó updateddate` ag aon earraí sa bhfotha, filleann: meth: `SyndicationFeed.latest_post_date () `an dáta/am reatha UTC anois, in ionad dáta-am gan aon fhaisnéis crios ama.

  • Tá teipeanna CSRF logáilte chuig an logger django.security.csrf in ionad django.request.

  • ALLOWED_HOSTS validation is no longer disabled when running tests. If your application includes tests with custom host names, you must include those host names in ALLOWED_HOSTS. See Tests and multiple host names.

  • Ag baint úsáide as id eochair eachtrach (m.sh. field_id') in ModelAdmin.list_display`, taispeánann ID an réad gaolmhar. Bain an iarmhír _id más mian leat sean-iompar léiriú teaghrán an réada.

  • I bhfoirmeacha samhail, sábhálann: class: ~django.db.models.charfield le Null=True anois NULL le haghaidh luachanna bána in ionad teaghráin folamh.

  • Ar Oracle, :meth: Model.validate_unique () <django.db.models.Model.validate_unique>`ní sheiceálann teaghráin folamh le haghaidh uathúlacht a thuilleadh mar a léirmhíníonn an bunachar sonraí an luach mar `NULL`.

  • Má dhéanann tú fo-aicmi:class: .abstractUser agus má sháraíonn tú clean () ``, cinnte go dtugann ``super (). :meth: Glaítear .BaseUserManager.Normalize_Email i modh nua:meth: .abstractuser.clean ionas go gcuirfear normalú i bhfeidhm i gcásanna cosúil le bailíochtú foirm mhúnla.

  • Ní ghlacann emailfield agus URLField` leis an argóint eochairfhocal strip a thuilleadh. Bain é toisc nach bhfuil éifeacht aige i leaganacha níos sine de Django mar scriosann na réimsí seo spás bán i gcónaí.

  • Úsáideann an tréith seiceáil agus roghnaithe a rinneadh ag giuirléidí foirme chomhréir boolean HTML5 anois seachas ``checked='checked'` agus ``selected='roghnaithe'` XHTML.

  • RelatedManager.add(), remove(), clear(), and set() now clear the prefetch_related() cache.

  • Chun caillteanas féideartha socruithe sábháilte a chosc, ardaíonn: func: ~django.test.utils.setup_test_environment eisceacht anois má thugtar air an dara huair sula nglaonn sé: func: ~django.test.utils.teardown_test_environment.

  • Baintear an alias DateTimeAwarejsonEncoder neamhdhoiciméadaithe do:class: ~django.core.serializers.json.djangojsonEncoder (athainmnithe i Django 1.0).

  • Tá an: class: luchtóir teimpléad cached <django.template.loaders.cached.Loader>`cumasaithe anois mura ndéantar socrú: `OPTIONS ['luchtaitheoirí']<TEMPLATES-OPTIONS> sonraithe agus:setting: OPTIONS ['debug'] `<TEMPLATES-OPTIONS>is `False` (réamhshocraíonn an rogha deireanach go luach:socrú: DEBUG). <template_tag_thread_safety>D'fhéadfadh sé seo a bheith comhoiriúnach ar chúl má tá clibeanna teimpléad éigin agat: ref: `nach bhfuil sábháilte snáithe `.

  • Ní tharlaíonn an pras le haghaidh scriosadh cineál ábhair seasta a thuilleadh tar éis an t-ordú imirce a reáchtáil. Úsáid an t-ordú nua:djadmin: remove_stale_contenttypes ina ionad.

  • Úsáideann giuirléid an riaracháin do IntegerField type="number" seachas type="text".

  • Déantar ceanntásca coinníollach HTTP a pháirseáil agus comparáid anois de réir na sonraíochta Iarrataí Coinníollacha: rfc: 7232 seachas an níos sine: rfc: 2616.

  • patch_response_headers() no longer adds a Last-Modified header. According to the RFC 7234 Section 4.2.2, this header is useless alongside other caching headers that provide an explicit expiration time, e.g. Expires or Cache-Control. UpdateCacheMiddleware and add_never_cache_headers() call patch_response_headers() and therefore are also affected by this change.

  • Sna teimpléid riaracháin, cuirtear clib <p class="help">```` in ionad <div> chun liostaí a áireamh laistigh de théacs cabhrach.

  • ConditionalGetMiddleware no longer sets the Date header as web servers set that header. It also no longer sets the Content-Length header as this is now done by CommonMiddleware.

    Má tá middleware agat a athraíonn ábhar freagra agus atá le feiceáil roimh CommonMiddleware i socruithe MIDDLEWARE nó MIDDLEWARE_CLASSES`, ní mór duit do mheán a athordú ionas nach ndéanfar freagraí tar éis Content-Length` a shocrú nó an freagra a athshocrú.

  • get_model() and get_models() now raise AppRegistryNotReady if they're called before models of all applications have been loaded. Previously they only required the target application's models to be loaded and thus could return models without all their relations set up. If you need the old behavior of get_model(), set the require_ready argument to False.

  • Baintear an tréith BaseCommand.can_import_settings neamhúsáidte.

  • Baintear an django.utils.functional.lazy_property neamhdhoiciméadaithe.

  • Le haghaidh comhsheasmhachta le hiarratais neamh-ilpháirteach, fágann `MultipartParser.parse () ````Request.Post inathraithe anois. Má tá tú ag modhnú an QueryDict sin, ní mór duit anois é a chóipeáil ar dtús, m.sh. ``Request.post.copy () ``.

  • Baintear tacaíocht do ``CX_Oracle ``< 5.2.

  • Baintear tacaíocht do IPython <1.0 ón ordú sliog.

  • D'athraigh síniú API príobháideach Widget.build_attrs () ``ó `Extra_Attrs=None, **kwargs go ``base_attrs, extra_attrs=None ``.

  • Tá réada cosúil le comhad (m.sh., :class: ~io.stringio agus:class: ~io.bytesio) a uaslódáil chuig an:class: ~django.db.models.imagefield ag baint úsáide as an cliant tástála ag teastáil tréith name anois le luach a rachaidh an:data: ~django.core.validators.extenate_image_file_sione_ bailíochtaitheoir. Féach an nóta in:meth: .client.post.

  • FileField now moves rather than copies the file it receives. With the default file upload settings, files larger than FILE_UPLOAD_MAX_MEMORY_SIZE now have the same permissions as temporary files (often 0o600) rather than the system's standard umask (often 0o6644). Set the FILE_UPLOAD_PERMISSIONS if you need the same permission regardless of file size.

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

IlghnéitheachLink to this heading

  • Tá tuairimí bunaithe ar fheidhm `contrib.auth login () ``agus ``logout () `` luasghabhunaithe i bhfabhar radhairc nua aicme-bhunaithe: class: ~django.contrib.contrib.auth.views.loginView agus:class: ~django.contrib.auth.views.logoutView.

  • Tá an paraiméadar extra_context neamhúsáidte de `contrib.auth.views.logout_then_login () ``a dhíchur.

  • contrib.auth password_change () `, password_change_done ()`, password_reset () `, password_reset_done ()`, password_reset_done () `, password_reset_verify ()`, agus ``password_reset_complete () tuairimí nua ar fheidhm tuairimí range-bhunaithe: class: `~django.contrib.auth.views.passwordChangeView, :class: ~django.contrib.auth.views.passwordChangedOneView, :class: ~django.contrib.auth.views.passwordResetView, :class: ~django.contrib.auth.views.passwordResetView DoneView`, :class: ~django.contrib.auth.views.PasswordResetConfirmView, agus:class: ~django. Contrib.auth.views.PasswordResetCompleteView.

  • Bogtar ``django.test.runner.setup_databases () ``chuig: func: django.test.utils.setup_databases. Tá an sean-shuíomh mionscailte.

  • django.utils.translation.string_concat () ``luasghabháilte i bhfabhr:func: `django.utils.text.format_lazy`. Is féidir ``format_lazy ('{}' * len (teaghráin), *teaghráin) ``a chur in ionad ``string_concat (*teaghráin).

  • Maidir leis an gcúltaca taisce Pylibmccache, tá socruithe iompraíochta pylibmc` a rith mar thréithe barrleibhéil de OPTIONS a dhíchur. Socraigh iad faoi eochair iompraíochtaí ``laistigh de `OPTIONS ina ionad.

  • Tá an paraiméadar host de django.utils.http.is_safe_url () ``a dhíchur i bhfabhar an pharaiméadar nua ``allowed_hosts`.

  • Tá eis <include>ceachtaí a thostú a ardaíodh agus clib teimpléad: ttag: {% include%} á léiriú díreach mar is minic a bhíonn an t-iompar níos mearbhall ná cabhrach. I Django 2.1, ardófar an eisceacht.

  • DatabaseIntrospection.get_Indexes () díscoilte i bhfabhar ``DatabaseIntrospection.get_Constraints () ``.

  • authenticate() now passes a request argument to the authenticate() method of authentication backends. Support for methods that don't accept request as the first positional argument will be removed in Django 2.1.

  • Tá an socrú USE_ETAG díluaite i bhfabhr:class: ~django.middleware.http.ConditionalGetMiddleware a chuireann an ceannteideal Etag anois le freagraí beann ar an socrú. Ní shocróidh CommonMiddleware agus ``django.utils.cache.patch_response_heads () ``eTaganna a thuilleadh nuair a chríochnaíonn an díphacáil.

  • Samhail. _meta.has_auto_field a dhíchur i bhfabhar seiceáil an bhfuil Samhail. Níl _meta.auto_field Non `.

  • Tá grúpaí léirithe rialta le Ilmsu#` in url () ``díluchtaithe. Is é an t-aon ghrúpa atá úsáideach ná ``(? i) ``le haghaidh URLanna cás-neamh-íogair, áfach, ní dea-chleachtas iad URLanna cás-neamh-íogair toisc go gcruthaíonn siad iontrálacha iolracha d'innill chuardaigh, mar shampla. D'fhéadfadh réiteach malartach a bheith a chruthú a:data: `~django.conf.urls.handler404 a lorgaíonn carachtair uachtaracha sa URL agus a atreoraíonn chuig coibhéis beaga.

  • <django.forms.Widget.render>Cuirtear an argóint renderer leis an modh:meth: `Widget.render () `. Oibreoidh modhanna nach nglacann leis an argóint sin trí thréimhse díscrúdaithe.