Nótaí scaoilte Django 1.9Link to this heading

1 Nollaig, 2015

Fáilte go dtí Django 1.9!

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

Éilíonn Django 1.9 Python 2.7, 3.4, nó 3.5. 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.8 an ceann deireanach a thacaíonn le Python 3.2 agus 3.3.

Cad atá nua i Django 1.9Link to this heading

Gníomhartha a dhéanamh tar éis idirbheart a dhéanamhLink to this heading

Ceadaíonn an crúca nua:func: `~django.db.transaction.on_commit gníomhartha a dhéanamh tar éis idirbheart bunachar sonraí a dhéanamh go rathúil. Tá sé seo úsáideach le haghaidh tascanna mar ríomhphoist fógra a sheoladh, tascanna scuaine a chruthú, nó táscáin a chur ar bhailí.

Tá an fheidhmiúlacht seo ón bpacáiste: pypi: django-transaction-hooks comhtháite i Django.

Bailíochtú pasfhocalLink to this heading

Cuireann Django bailíochtú pasfhocal ar fáil anois chun cabhrú le húsáid pasfhocail laga ag úsáideoirí a chosc. Tá an bailíochtú comhtháite sna foirmeacha athraithe agus athshocraithe pasfhocal san áireamh agus tá sé simplí a chomhtháthú in aon chód eile. Déanann bailíochtaithe amháin nó níos mó bailíochtú, cumraithe sa shocrú nua:setting: AUTH_PASSWORD_VALIDATORS.

Tá ceithre bhailíochtóir san áireamh i Django, ar féidir leo fad íosta a fhorfheidhmiú, an pasfhocal a chur i gcomparáid le tréithe an úsáideora cosúil lena n-ainm, a chinntiú nach bhfuil pasfhocail uimhriúla go hiomlán, nó seiceáil i gcoinne liosta pasfhocail choitianta. Is féidir leat ilbhailíochtóirí a chur le chéile, agus tá roghanna cumraíochta saincheaptha ag roinnt bailíochtóirí. Mar shampla, is féidir leat a roghnú liosta saincheaptha de phasfhocail choitianta a sholáthar. Soláthraíonn gach bailíochtóir téacs cabhrach chun a riachtanais a mhíniú don úsáideoir.

De réir réamhshocraithe, ní dhéantar aon bhailíochtú agus glactar leis na pasfhocail go léir, mar sin mura socraíonn tú: setting: AUTH_PASSWORD_VALIDATORS, ní fheicfidh tú aon athrú. I dtionscadail nua a cruthaíodh leis an teimpléad réamhshocraithe: djadmin: startproject, cumasaítear tacar simplí bailíochtóirí. Chun bailíochtú bunúsach a chumasú sna foirmeacha auth san áireamh do do thionscadal, d'fhéadfá a shocrú, mar shampla:

Code
AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
    },
]

Féach:ref: bailíochtú pasfhocal le haghaidh tuilleadh sonraí.

Meascáin ceadúnais le haghaidh tuairimí rang-bhunaitheLink to this heading

Seolann Django anois leis na meascáin: class: ~django.contrib.auth.mixins.accessMixin, :class: ~django.contrib.auth.mixins.loginrequiredMixin, :class: ~django.contrib.auth.mixins.permissionrequiredMixin, agus:class: ~django.contrib.contrib.Mixins.userPassestestMixin chun feidhmiúlacht an ``django.contrib.auth.decorators ``a sholáthar le haghaidh tuairimí rang-bhunaithe. Tógadh na meascáin seo ón tionscadal django-braces, nó spreagtar iad ar a laghad.

Tá cúpla difríocht idir cur i bhfeidhm Django agus ``django-braces ``', áfach:

  • Ní féidir an tréith: Attr: ~django.contrib.auth.mixins.accessMixin.raise_exception a bheith ach TrueFalse. Ní thacaítear le heisceachtaí saincheaptha nó glaonna.

  • Ní ghlacann an modh:Meth: ~django.contrib.auth.mixins.accessMixin.handle_no_permission argóint iarraidh`. an t-iarratas reatha ar fáil in ``self.request.

  • Ní ghlacann an saincheaptha test_func () ``o:class: `~django.contrib.auth.mixins.userPassestestMixin` argóint ``úsáideora. Tá an t-úsáideoir reatha ar fáil in self.request.user.

  • Tacaíonn an tréith: attr: `permission_required <django.contrib.auth.mixins.PermissionRequiredMixin>`le sreang (cead amháin a shainmhíníonn) nó le liosta/tiúpla teaghráin (ceadanna iolracha a shainiú) nach mór a chomhlíonadh chun rochtain a dheonú.

  • Ceadaíonn an tréith nua:attr: ~django.contrib.auth.mixins.accessmixin.permission_denied_message teachtaireacht a chur chuig an eisceacht PermissionDenied.

Stíl nua do contrib.adminLink to this heading

Spóirt an riarthóir dearadh nua-aimseartha, cothrom le deilbhíní SVG nua a bhreathnaíonn foirfe ar scáileáin HiDPI. Soláthraíonn sé eispéireas lánfheidhmeach fós do bhrabhsálaithe YUI A-grád. D’fhéadfadh leibhéil éagsúla díghrádaithe a bheith ag brabhsálaithe níos sine.

Tástálacha reatha go comhthreomharLink to this heading

Tacaíonn an t-ordú: DjaDmin: tástála anois le rogha a: `--comhthreomhar `chun tástálacha tionscadail a reáchtáil i bpró <test --parallel>isis iolracha go comhthreomhar.

Faigheann gach próiseas a bhunachar sonraí féin. Ní mór duit a chinntiú nach bhfuil rochtain ag cásanna tástála éagsúla ar na hacmhainní céanna Mar shampla, ba cheart do chásanna tástála a théann i dteagmháil leis an gcóras comhaid eolaire sealadach a chruthú lena n-úsáid féin.

Tá an rogha seo cumasaithe de réir réamhshocraithe do shraith tástála Django féin ar fáil:

  • tacaíonn an OS leis (gach ceann ach Windows)

  • tacaíonn cúltaca an bhunachar sonraí leis (na cúltaca ionsuite go léir ach Oracle)

MionghnéitheLink to this heading

django.contrib.adminLink to this heading

  • Tá tréithe model_admin ``nó ``admin_site ag tuairimí riaracháin anois.

  • <app><model><pk>Athraíodh URL an radharc athraithe riaracháin (bhí sé ag /admin//<app>// de réir réamh <model><pk>shocraithe agus tá sé anois ag ``/admin///change/ ``). Níor cheart go ndéanfadh sé seo difear d'iarratas mura bhfuil URLanna riaracháin crua-chódaithe agat. <admin-reverse-urls>Sa chás sin, cuir na naisc sin in ionad: ref: `URLanna riaracháin a aisiompú `ina ionad sin. Tabhair faoi deara go n-atreoraíonn an sean-URL go dtí an ceann nua fós le haghaidh comhoiriúnacht ar ais, ach féadfar é a bhaint i leagan amach anseo.

  • ModelAdmin.get_list_select_related() was added to allow changing the select_related() values used in the admin's changelist query based on the request.

  • <django.contrib.admin.AdminSite.each_context>Cuireadh an t-athróg comhthéacs available_apps`, a liostaíonn na feidhmchláir atá ar fáil don úsáideoir reatha, leis an modh: meth: `adminsite.each_context () `.

  • <django.contrib.admin.ModelAdmin.empty_value_display>:attr: Adminsite.empty_value_display `agus:attr: <django.contrib.admin.AdminSite.empty_value_display>`ModelAdmin.empty_value_display cuireadh leis chun taispeáint luachanna folmha i liosta athruithe riaracháin a shárú. Is féidir leat an luach do gach réimse a shaincheapadh freisin.

  • Cuireadh imeachtaí jQuery leis: ref: `nuair a chuirtear foirm inlíne leis nó baintear <admin-javascript-inline-form-events>`ar an leathanach foirm athraithe.

  • Cuimsíonn an giuirléid roghnaithe ama rogha '6 p.m' chun comhsheasmhainneacht roghanna réamhshainithe a bheith agat gach 6 uair an chloig.

  • Tacaíonn giniúint slug JavaScript anois le carachtair na Rómáine.

django.contrib.admindocsLink to this heading

  • Déanann an chuid samhail den admindocs cur síos anois ar mhodhanna a thógann argóintí, seachas neamhaird a dhéanamh orthu.

django.contrib.authLink to this heading

  • Méadaíodh 20% an líon athraithe réamhshocraithe don hasher pasfhocal PBKDF2. Ní dhéanfaidh an t-athrú comhoiriúnach ar chúl difear d'úsáideoirí a bhfuil fo-aicmithe ag Django.contrib.auth.hashers.pbkdf2PasswordHasher chun an luach réamhshocraithe a athrú.

  • Déanfaidh an BCryptsha256PasswordHasher` pasfhocail a nuashonrú anois má athraítear a thréith ``rounds`.

  • Bogadh AbstractBaseUser agus BaseUserManager chuig modúl nua django.contrib.auth.base_user ionas gur féidir iad a allmhairiú gan django.contrib.auth a chur san áireamh in:setting: INSTALLED_APPS (ag déanamh amhlaidh rabhadh i leaganacha níos sine agus ní thacaíonn sé i Django 1.9).

  • The permission argument of permission_required() accepts all kinds of iterables, not only list and tuples.

  • De bharr nua:class: ~django.contrib.auth.middleware.persistentRemoteUserMiddleware is féidir REMOTE_USER a úsáid le haghaidh socruithe nach bhfuil an ceannteideal ach ar leathanaigh logála isteach in ionad gach iarratas sa seisiún.

  • Glacann an radharc django.contrib.auth.views.password_reset () ``le paraiméadar ``extra_email_context.

django.contrib.contenttypesLink to this heading

  • Is féidir anois: attr: ~django.db.models.options.ORDER_with_RESPECT_TO a úsáid le GenericForeignKey.

django.contrib.gisLink to this heading

  • Tá gach modh GeoquerySet a dhíscríobh agus cuireadh: doc: `feidhmeanna bunachar sonraí coibhéiseach 'ina ionad. </ref/contrib/gis/functions> Chomh luath agus a cuirtear na modhanna oidhreachta in ionad i do chód, ba cheart go mbeadh tú in ann an “Geomanager” speisialta a bhaint as do ranganna cumasaithe GIS fiú.

  • <raster-data-source-objects>Tacaíonn an comhéadan GDAL anois le comhadbhunaithe agus in-chuimhne:ref: `rudaí GDAlraster `ó shonraí amh. Cuireadh socraithe le haghaidh airíonna raster cosúil le luachanna teilgean nó picteilín.

  • <creating-and-saving-raster-models>Maidir le húsáideoirí PostGIS, ceadaíonn an nua:class: ~django.contrib.gis.db.models.rasterfield: ref: `rudaí GDAlraster a stóráil `. Tacaíonn sé le cruthú innéacs spásúil uathoibríoch agus athléiriú nuair a shábháil Ní thacaíonn sé le fiosrúchán spásúil fós.

  • Ligeann an <django.contrib.gis.gdal.GDALRaster.warp>modh nua:meth: `gdalraster.warp () `raster a chreamú trí airíonna raster sprioc-raster a shonrú mar bhunús, leithead, airde nó méid picteilín (i measc eile).

  • Ligeann an modh nua:meth: gdalraster.transformer () <django.contrib.gis.gdal.GDALRaster.transform>`raster a athrú go córas tagartha spásúil difriúil trí sprioc ``srid` a shonrú.

  • Ceadaíonn an rang nua:class: ~django.contrib.gis.geoip2.geoip2 bunachair sonraí GeoLite2 MaxMind a úsáid a chuimsíonn tacaíocht do sheoltaí IPv6.

  • Nuashonraíodh an leagan réamhshocraithe leabharlainne OpenLayers atá san áireamh i giuirléidí ó 2.13 go 2.13.1.

django.contrib.postgresLink to this heading

  • Tacaíocht bhreise don chuardach: lookup: rangefield.contained_by do roinnt réimsí tógtha i réimsí a fhreagraíonn do na réimsí raon.

  • Cuireadh django.contrib.postgres.fields.jsonfield leis.

  • Cuireadh leis: doc: /ref/contrib/postgres/aggregates.

  • Cuireadh feidhm bunachar sonraí: class: ~django.contrib.postgres.functions.TransactionNow leis.

django.contrib.sessionsLink to this heading

  • Athraítear an tsamhail seisiúin agus na ranganna SessionStore do na cúltaca db agus cached_db` chun ligean cúltaca seisiúin bunachar sonraí saincheaptha tógáil orthu. Féach: Ref: extending-database-backed-seision-inneallaire le haghaidh tuilleadh sonraí.

django.contrib.sitesLink to this heading

  • get_current_site() now handles the case where request.get_host() returns domain:port, e.g. example.com:80. If the lookup fails because the host does not match a record in the database and the host has a port, the port is stripped and the lookup is retried with the domain part only.

django.contrib.syndicationLink to this heading

  • Cuireadh tacaíocht le haghaidh iolracha iolracha in aghaidh an earra beatha. Má shainmhínítear iolrghabhálacha ar fhotha RSS, ardaítear eisceacht mar ní thacaíonn fothaí RSS, murab ionann agus fothaí Atom, le iolracha iolracha in aghaidh an earra beatha.

CacheLink to this heading

  • Tá modh get_or_set () ``anois ag `django.core.cache.backends.base.baseCache.

  • django.views.decorators.cache.never_cache() now sends more persuasive headers (added no-cache, no-store, must-revalidate to Cache-Control) to better prevent caching. This was also added in Django 1.8.8.

CSRFLink to this heading

  • Is féidir ainm ceanntásc an iarratais a úsáidtear le haghaidh fíordheimhniú CSRF a shaincheapadh la:setting: CSRF_HEADER_NAME.

  • Tá ceanntásc tagairtí CSRF bailíochtaithe anois i gcoinne an socruithe:: CSRF_COOKIE_DOMAIN má tá sé socraithe. Féach: ref: how csrf-works le haghaidh sonraí.

  • Soláthraíonn an socrú nua:setting: CSRF_TRUSTED_ORIGINS bealach chun iarratais neamhshábháilte tras-bhunús (m.sh. POST `) a cheadú thar HTTPS.

Cúltaca bunachar sonraíLink to this heading

  • Tá an cúltaca PostgreSQL (django.db.backends.postgresql_psycopg2) ar fáil freisin mar django.db.backends.postgresql. Leanfaidh an sean-ainm ar fáil le haghaidh comhoiriúnacht ar ais.

Stóráil ComhadLink to this heading

FoirmeachaLink to this heading

  • ModelForm accepts the new Meta option field_classes to customize the type of the fields. See Sárú ar na réimsí réamhshocraithe for details.

  • Is féidir leat anois an t-ord ina ndéantar réimsí foirme a shonrú leis an tréith: attr: ~django.forms.form.field_order, an t-argóint tógálaí field_order, nó an modh:meth: ~django.forms.form.ORDER_fields.

  • Is féidir réimír foirme a shonrú taobh istigh de rang foirme, ní amháin nuair a bhíonn foirm á chur i bhfeidhm. Féach: ref: form-prefix le haghaidh sonraí.

  • Is féidir leat anois:ref: `argóintí eochairfhocal a shonrú <custom-formset-form-kwargs>`a theastaíonn uait a chur chuig tógálaí foirmeacha i bhfoirmeach.

  • SlugField now accepts an allow_unicode argument to allow Unicode characters in slugs.

  • CharField now accepts a strip argument to strip input data of leading and trailing whitespace. As this defaults to True this is different behavior from previous releases.

  • Tacaíonn réimsí foirme anois leis an argóint: attr: ~django.forms.field.disabled, rud a ligeann an giuirléid réimse a thaispeáint faoi dhíchumasú ag brabhsálaithe.

  • It's now possible to customize bound fields by overriding a field's get_bound_field() method.

Tuairimí cineálachaLink to this heading

IdirnáisiúnúLink to this heading

  • <url-internationalization>Atreoraíonn an amharc:func: django.views.i18n.set_language i gceart anois chuig:ref: `URLanna aistrithe `, nuair atá ar fáil.

  • Oibríonn an radharc ``django.views.i18n.javascript_catalog () ``i gceart anois má úsáidtear é arís agus arís eile le cumraíochtaí éagsúla ar an leathanach céanna.

  • Fuair an fheidhm:func: django.utils.timezone.make_aware argóint is_dst chun cabhrú le hamanna débhríochta a réiteach le linn aistrithe DST.

  • Is féidir leat leaganacha áitiúla a úsáid anois le tacaíocht ó gettext. Úsáidtear iad seo de ghnáth le haghaidh teangacha is féidir iad a scríobh i scripteanna éagsúla, mar shampla Laidin agus Cirillic (m.sh. be @latin `).

  • Cuireadh an dearcadh ``django.views.i18n.json_catalog () `leis chun cabhrú le leabharlann saincheaptha i18n ar thaobh an chliaint a thógáil ar aistriúcháin Django. Tugann sé réad JSON ar ais ina bhfuil catalóg aistriúcháin, socruithe formáidithe, agus riail iolra.

  • Cuireadh an tréith name_translated leis an réad ar ais ag an gclib teimpléad:ttag: get_language_info. Chuir scagaire teimpléad comhfhreagrach leis freisin: :tfilter: language_name_translated.

  • Is féidir leat anois: djadmin: compilemessages a rith ó eolaire fréimhe do thionscadail agus gheobhaidh sé na comhaid teachtaireachta aip go léir a chruthaigh: djadmin: makemessages.

  • makemessages now calls xgettext once per locale directory rather than once per translatable file. This speeds up localization builds.

  • blocktrans supports assigning its output to a variable using asvar.

  • Tá dhá theanga nua ar fáil: Spáinnis na Colóime agus Gaeilge na hAlban.

Orduithe BainistíochtaLink to this heading

  • Ligeann an t-ordú nua:djadmin: sendtestemail duit ríomhphost tástála a sheoladh chun a dhearbhú go héasca go bhfuil seoladh ríomhphoist trí Django ag obair.

  • Chun inléiteacht an chóid SQL a ghineann: djadmin: sqlmigrate a mhéadú, cuirtear tuairisc na hoibríochta roimh an gcód SQL a ghintear do gach oibríocht imirce.

  • Tá an t-aschur ordaithe: DJAdmin: dumpdata ordaithe go cinntiúil anois. Thairis sin, nuair a shonraítear an rogha ``--aschur ``, taispeánann sé barra dul chun cinn sa chríochfort freisin.

  • Tá bratach --dry-run anois ag an ordú: DjaDmin: createcachetable chun an SQL a phriontáil amach seachas é a fhorghníomhú.

  • Cruthaíonn an t-ordú:djaDmin: startapp comhad apps.py. Ós rud é nach n-úsáideann sé default_app_config (:ref: a dhíspreagtha API `<configuring-applications-ref>), ní mór duit cosán cumraíocht an aip a shonrú, m.sh. ``Polls.apps.pollsconfig', in:setting: INSTALLED_APPS chun é a úsáid (in ionad polls' amháin).

  • Agus cúltaca PostgreSQL á úsáid agat, is féidir leis an ordú:djadmin: dbshell nascadh leis an mbunachar sonraí ag baint úsáide as an bhfocal faire ó do chomhad socruithe (in ionad a cheangal go ndéanfar é a iontráil de láimh).

  • Is féidir an pacáiste django a reáchtáil mar script, ie python -m django, a iompraíonn mar an gcéanna le django-admin.

  • Glacann orduithe bainistíochta a bhfuil an rogha --noinput acu anois --no-input mar ainm don rogha sin.

ImirceLink to this heading

  • Tá imirce tosaigh marcáilte anois le tréith <django.db.migrations.Migration.initial>aicme: attr: inicial = True `a cheadaíonn: rogha: `migrar --fake-initial chun imirce tosaigh a bhrath níos éasca.

  • Tacaíocht bhreise le haghaidh sraitheadh cásanna functools.partial agus LazyObject.

  • Agus “None” á sholáthar agat mar luach in:setting: MIGRATION_MODULES, measfaidh Django an aip mar aip gan imirce.

  • Agus imirce á chur i bhfeidhm, ní ríomhaíonn an chéim “Stáit samhail rindreála” a thaispeántar agus imirce á reáchtáil le verbosity 2 nó níos airde anois ach na stáit do na himirce a cuireadh i bhfeidhm cheana féin. Gintear na stáit samhail maidir le himirce atá á chur i bhfeidhm ar éileamh, ag laghdú go suntasach an méid cuimhne riachtanach.

    Mar sin féin, níl an feabhas seo ar fáil nuair nach gcuirtear i bhfeidhm imirce agus mar sin tá gá fós le réamh-ríomh agus stóráil na stáit imirce idirmheánacha.

    Éilíonn an feabhsú seo freisin nach dtacaíonn Django le pleananna imirce measctha a thuilleadh. Is éard atá i bpleananna measctha liosta aistrithe a bhfuil cuid acu á gcur i bhfeidhm agus cinn eile nach bhfuil á gcur i bhfeidhm. Níor tugadh tacaíocht oifigiúil riamh dó seo agus ní raibh API poiblí ann riamh a thacaíonn leis an iompar seo.

  • Tacaíonn an t-ordú: Djadmin: squashmigrations anois leis an imirce tosaigh a shonrú óna ndéanfar imirce a scriosadh.

SamhlaLink to this heading

  • <django.db.models.query.QuerySet.bulk_create>: meth: `QuerySet.bulk_create () `oibríonn anois ar mhúnlaí seachfhreastalaí.

  • Fuair cumraíocht bunachar sonraí a: leagan: TIME_ZONE <DATABASE-TIME_ZONE>`rogha chun idirghníomhú le bunachair sonraí a stóráilíonn amanna dáta in am áitiúil agus nach dtacaíonn le criosanna ama nuai:socrú: `USE_TZ True.

  • Chuir an modh: meth: RelatedManager.set () leis na bainisteoirí gaolmhara a chruthaigh ``ForeignKey`, GenericForeignKey`, <django.db.models.fields.related.RelatedManager.set () > agus ManyTomanyField.

  • Tá paraiméadar bulk ag an modh: Meth: ~Django.DB.Models.Fields.Related.RelatedManager.Add ar eochair eachtrach droim ar ais anois chun ceist amháin a fhorghníomhú beag beann ar líon na rudaí atá á chur leis seachas ceist amháin in aghaidh an rud.

  • Cuireadh an paraiméadar keep_parents chuig: meth: `Model.delete () <django.db.models.Model.delete>`chun sonraí linbh a scriosadh amháin i samhail a úsáideann oidhreacht il-tábla.

  • <django.db.models.query.QuerySet.delete>:meth: Model.delete () `agus:meth: <django.db.models.Model.delete>`QuerySet.delete () cuir ar ais líon na rudaí a scriosadh.

  • Cuireadh seiceáil córais leis chun cosc a chur ar Meta.Ordering agus order_with_respect_to araon a shainiú ar an tsamhail chéanna.

  • Date and time lookups can be chained with other lookups (such as exact, gt, lt, etc.). For example: Entry.objects.filter(pub_date__month__gt=6).

  • Tacaíonn le cuardaigh ama (uair an chloig, nóiméad, dara) anois ó:class: ~django.db.models.timefield do gach cúltaca bunachar sonraí. Cuireadh tacaíocht do chúltaca seachas SQLite leis ach gan doiciméadú i Django 1.7.

  • Is féidir leat an paraiméadar output_field den chomhiomlán: class: ~django.db.models.avg a shonrú d'fhonn comhiomlán a chomhiomlánú thar cholúin neamh-uimhriúla, mar shampla DurationField.

  • Cuireadh an cuardach: lookup: dáta chuig:: class: ~django.db.models.DateTimeField chun cead a dhéanamh ar an réimse a fhiosrú faoin gcuid dáta amháin.

  • Cuireadh feidhmeanna bunachar sonraí:: class: ~django.db.models.functions.greatest agus:class: ~django.db.models.functions.least leis.

  • Cuireadh feidhm bunachar sonraí: class: ~django.db.models.functions.now leis, a thugann an dáta agus an t-am reatha ar ais.

  • Transform is now a subclass of Func() which allows Transforms to be used on the right hand side of an expression, just like regular Funcs. This allows registering some database functions like Length, Lower, and Upper as transforms.

  • SlugField now accepts an allow_unicode argument to allow Unicode characters in slugs.

  • Tacaíocht bhreise chun anótaí a thagairt i ``QuerySet.Distinct () ``.

  • Taispeánann connection.queries ceisteanna le paraiméadair ionadaithe ar SQLite.

  • Query expressions can now be used when creating new model instances using save(), create(), and bulk_create().

Iarrataí agus FreagraíLink to this heading

  • <django.http.HttpResponse.status_code>Unless:attr: Tá HttpResponse.Reason_frase <django.http.HttpResponse.reason_phrase>`socraithe go sainráite, socraítear é anois ag an luach reatha de:attr: `HttpResponse.STATUS_CODE. Athrófar luach status_code lasmuigh den tógálaí luach réasúna_frase freisin.

  • Taispeánann an dearcadh dífhabhtaithe sonraí faoi eisceachtaí slabhraithe ar Python 3 anois.

  • Glacann na tuairimí earráide réamhshocraithe 40x leis an dara paraiméadar suímh anois, an eisceacht a spreag an radharc.

  • Tacaíonn láimhseálaithe earráide féach anois:class: ~django.template.response.templateResponse, a úsáidtear go coitianta le tuairimí rang-bhunaithe.

  • Cuirtear eisceachtaí a ardaítear leis an modh render () ``anois chuig modh ``process_exception () de gach middleware.

  • Is féidir iarratas a dhéanamh anois:attr: HttpRequest.urlconf <django.http.HttpRequest.urlconf>`go ``None` chun aon athruithe a rinne middleware roimhe seo a chur ar ais agus filleadh ar an: setting: ROOT_URLCONF a úsáid.

  • Ardaíonn an seiceála:SETTING: DISALLOWED_USER_AGENTS eisceacht in:class: ~django.middleware.commonMiddleware anois: a:class: ~django.core.exceptions.permissiondenied seachas filleadh ara:class: ~django.http.http.httpresponsedden ionas ionas go ndéan:data: ~django.conf.forbid.conf.Iarraítear ar .urls.handler403.

  • <django.http.HttpRequest.get_port>Cuireadh leis: Meth: `HttpRequest.get_port () `chun calafort tionscnaimh an iarratais a fháil.

  • Cuireadh an paraiméadar json_dumps_params chuig: class: ~django.http.jsonResponse chun argóintí eochairfhocal a chur chuig an nglao ``json.dumps () ``a úsáidtear chun an freagra a ghiniúint.

  • Déanann an BrokenLinkEmailsMiddleware neamhaird anois ar 404anna nuair a bhíonn an moltóir cothrom leis an URL iarrtha. Chun dul timpeall ar an tseiceáil atreoraithe folamh a cuireadh i bhfeidhm cheana féin, shocraigh roinnt róbónna gréasáin an tagróir chuig an URL iarrtha.

TeimpléidLink to this heading

  • Is féidir le clibeanna teimpléad a cruthaíodh leis an gcúntóir: meth: ~django.template.library.simple_tag torthaí a stóráil anois in athróg teimpléad tríd an argóint ``as ``a úsáid.

  • <django.template.Context.setdefault>Cuireadh: meth leis: `Context.setDefault () `modh.

  • Cuireadh <django-template-logger>logger:ref: `django.template `leis agus tá na teachtaireachtaí seo a leanas ann:

    • Teachtaireacht leibhéal ``DEBUG` le haghaidh athróga comhthéacs atá in easnamh.

    • Teachtaireacht leibhéal RABHADH ``d'eisceachtaí gan ghabháil a ardaíodh le linn rindreáil` {% include%} nuair a bhíonn modh dífhabhtaithe as (cabhrach ós rud é go gcuireann {% include%} ``an eisceacht a thostaíonn agus cuireann sé sreang folamh ar ais).

  • Tacaíonn an chlib teimpléad: ttag: firstof leis an aschur a stóráil in athróg ag baint úsáide as 'as'.

  • Context.update() can now be used as a context manager.

  • Is féidir le lódóirí teimpléid Django teimpléid a shíneadh go hathchúrsach anois.

  • Cuimsíonn an teimpléad leathanaigh dífhabhtaithe post mortem anois aschur ó gach inneall atá suiteáilte.

  • Debug page integration for custom template engines was added.

  • <TEMPLATES-OPTIONS>Fuair an cúltaca: Class: ~django.template.backends.django.djangoTemplates an cumas leabharlanna agus tógáin a chlárú go sainráite tríd an teimpléad:setting: `OPTIONS `.

  • Feabhsaíodh na scagairí timesince agus timeuntil chun déileáil le blianta léim nuair a thugtar spaitheanna móra ama.

  • Déanann an chlib `san áireamh ``rudaí teimpléid pháirseáilte anois le linn rindreála teimpléid, ag luasú athúsáide in áiteanna mar lúb.

TástálachaLink to this heading

  • Cuireadh an modh: meth: `json () <django.test.Response.json>`leis chun freagraí cliant a thástáil chun rochtain a thabhairt ar an gcomhlacht freagartha mar JSON.

  • Added the force_login() method to the test client. Use this method to simulate the effect of a user logging into the site while skipping the authentication and verification steps of login().

URLannaLink to this heading

  • Ceadaítear dearbhú rialta breatharound abairt anois i bpatrúin URL.

  • Is féidir spás ainmneacha an fheidhmchláir a shocrú anois ag baint úsáide as tréith app_name ar an modúl nó an réad san áireamh. Is féidir é a shocrú freisin trí dhá thúpla de (<list of patterns>,<application namespace>) a rith mar an chéad argóint chun ``include () ``.

  • Cuireadh seiceálacha córais le haghaidh botúin patrún URL coitianta.

BailíochtóiríLink to this heading

  • Cuireadh leis: func: django.core.validators.int_list_validator chun bailíochtóirí teaghráin a ghiniúint ina bhfuil sláimhreacha scartha le carachtar saincheaptha.

  • EmailValidator now limits the length of domain name labels to 63 characters per RFC 1034.

  • Cuireadh leis: func: ~django.core.validators.validate_unicode_slug chun slugs a bhféadfadh carachtair Unicode a bheith ina mbailíochtú.

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

API cúltaca bunachar sonraíLink to this heading

  • Braitheann cúpla tástáil nua ar chumas an chúltaca réamhshocruithe colún a ionchur (an toradh a thabhairt ar ais mar Field.default'). Is féidir leat an ghné bunachar sonraí ``can_introspect_default` a shocrú go False mura gcuireann do chúltaca seo i bhfeidhm. B'fhéidir gur mhaith leat athbhreithniú a dhéanamh ar an gcur chun feidhme ar na cúltaca a chuimsíonn Django le haghaidh tagartha (:ticket: `24245 `).

  • Cuirtear cuibheoir nó tiontaire domhanda a chlárú ag leibhéal an mhodúil DB-API chun faisnéis chrios ama a láimhseáil de:class: ~datetime.datetime luachanna a rith mar pharaiméadair cheisteanna nó a chuirtear ar ais mar thorthaí fiosrúcháin ar bhunachar sonraí nach dtacaíonn le criosanna ama. Féadann sé coinbhleacht le leabharlanna eile.

    Is é an bealach a mholtar chun crios ama a chur chuig:class: ~datetime.datetime luachanna a fhaightear ón mbunachar sonraí ná tiontaire a chlárú do DateTimeField` i DatabaseOperations.get_DB_Converters () `.

    Baineadh an ghné bunachar sonraí needs_datetime_string_cast`. Caithfidh cúltaca bunachar sonraí a leagann sé tiontaire a chlárú ina ionad sin, mar a mhínítear thuas.

  • <type><type>Athainmníodh na modhanna databaseOperations.value_to_db_ <type>() ``go ``adapt_ field_value () chun na modhanna ``convert_ field_value () ``a scáthú.

  • Chun an cuardach nua dáta ``a úsáid, b'fhéidir go mbeidh ar chúltaca bunachar sonraí tríú páirtí an modh DatabaseOperations.DateTime_Cast_Date_SQL () ``a chur i bhfeidhm.

  • Cuireadh an modh DatabaseOperations.TIME_EXTRACT_SQL () leis. Glaonn sé an modh ``date_extract_sql () atá ann cheana. Cuireann an cúltaca SQLite ar an modh seo chun cuardaigh ama (uair an chloig, nóiméad, dara) a chur chuig: class: `~Django.db.Models.TimeField, agus d'fhéadfadh go mbeadh gá le cúltaca bunachar sonraí tríú páirtí uaidh.

  • Tá an modh DatabaseOperations.DateTime_Cast_SQL () `(gan a mheascadh le DatabaseOperations.DateTime_Cast_Date_SQL ()` luaitear thuas) baineadh. D'fhreastail an modh seo chun dátaí a fhormáidiú ar Oracle i bhfad roimh 1.0, ach níor sháraigh aon chúltaca croí é le blianta agus níor ghlaoigh sé áit ar bith i gcód nó i dtástálacha Django.

  • D'fhonn tacú le comhthreomhaíocht tástála, ní mór duit an DatabaseCreation a chur i bhfeidhm. Modh _clone_test_db () ``agus socraigh ``databaseFeatures.can_Clone_Databases = True. B'fhéidir go mbeidh ort Databasecreation.get_test_db_clone_settings () a choigeartú.

Is liostaí anois iad socruithe réamhshocraithe a bhí ina tuplesLink to this heading

Ba iad na socruithe réamhshocraithe i django.conf.global_settings` meascán de liostaí agus tuples. Is liostaí anois iad na socruithe go léir a bhí tuples roimhe seo.

Baintear tréith is_usable ar luchtaitheoirí teimpléadLink to this heading

D'éilíodh luchtóirí teimpléad Django roimhe seo tréith is_usable a shainiú. Dá mbeadh lódóir cumraithe i socruithe na teimpléid agus dá mbeadh an tréith seo False`, déanfaí neamhaird ar an lódóir go ciúin. Go praiticiúil, níor úsáid an lódóir uibheacha é seo ach chun a bhrath an raibh “setuptools” suiteáilte. Baintear an tréith is_usable anois agus ina ionad sin teipeann ar an lódóir uibheacha ag am rith mura bhfuil setuptools suiteáilte.

Glacann lódálaithe teimpléad bunaithe ar chóras comhaid eisceachtaí níos sonrachaLink to this heading

Agus luchtóirí teimpléad:class: FileSystem.loader <django.template.loaders.filesystem.Loader>`nó:class: `App_Directories.Loader á úsáid<django.template.loaders.app_directories.Loader>, d'ardaigh leaganacha níos luaithe de Django earráid a:exc: ~django.template.templateDoesNotExist má bhí foinse teimpléad ann ach nach raibh sé inléite. D'fhéadfadh sé seo tarlú faoi go leor imthosca, mar shampla mura raibh ceadanna ag Django chun an comhad a oscailt, nó más eolaire é foinse an teimpléid. Anois, ní thostaíonn Django ach an eisceacht mura bhfuil an fhoinse teimpléid ann. Mar thoradh ar gach cás eile go n-ardaítear an ``Ioerror` bunaidh.

Ní chuirtear iallach ar atreoruithe HTTP a thuilleadh chuig URIannaLink to this heading

Ní thiontaítear atreoruithe coibhneasta go URIs iomlána a thuilleadh. :rfc: D'éilíonn 2616 go mbeadh an ceannteideal Suíomh ``i bhfreagraí atreoraithe ina URI iomlán, ach cuireadh in ionad aith:rfc: `7231` a cheadaíonn URIs coibhneasta i ``Suíomh, ag aithint cleachtas iarbhír gníomhairí úsáideora, a thacaíonn beagnach gach ceann acu leo.

Dá bhrí sin, níor cheart go ginearálta go n-áireofaí sna URLanna ionchais a cuireadh ar aghaidh chuig asertRedirects an scéim agus an chuid fearainn de na URLanna a thuilleadh. Mar shampla, ba cheart `` self.assertRedirects(response, '/ some-url/')`` (mura rud é bhí URL iomlán go sonrach san atreorú).

Sa chás annamh go dteastaíonn an sean-iompar uait (a aimsíodh le leagan ársa de Apache le mod_scgi` a léirmhíníonn atreorú coibhneasta mar “atreorú inmheánach”), is féidir leat é a chur ar ais trí mheán saincheaptha a scríobh:

Code
class LocationHeaderFix(object):
    def process_response(self, request, response):
        if "Location" in response:
            response["Location"] = request.build_absolute_uri(response["Location"])
        return response

Tacaíocht titim do PostgreSQL 9.0Link to this heading

Tháinig deireadh le tacaíocht suas srutha do PostgreSQL 9.0 i Meán Fómhair 2015. Mar thoradh air sin, socraíonn Django 1.9 9.1 mar an leagan íosta PostgreSQL a thacaíonn sé go hoifigiúil.

Tacaíocht titim do Oracle 11.1Link to this heading

Tháinig deireadh le tacaíocht suas srutha do Oracle 11.1 i mí Lúnasa 2015. Mar thoradh air sin, socraíonn Django 1.9 11.2 mar an leagan íosta Oracle a thacaíonn sé go hoifigiúil.

Baintear teimpléad LoaderOrigin agus StringOriginLink to this heading

I leaganacha roimhe seo de Django, nuair a cuireadh inneall teimpléad a thionscnamh le dífhabhtú mar True, socraíodh sampla de Django.Template.Loader.LoaderOriginDjango.Template.Base.StringOrigin mar an tréith bunús ar an réad teimpléid. Cuireadh na ranganna seo le chéile la:class: ~django.template.base.origin agus tá sé socraithe anois i gcónaí beag beann ar an socrú dífhabhtaithe innill. Le haghaidh leibhéal íosta comhoiriúnachta ar ais, coimeádfar na sean-ainmneacha ranga mar ainmneacha don rang nua ``Origin` go dtí Django 2.0.

Athruithe ar an chumraíocht logála réamhshocraitheLink to this heading

Chun go mbeidh sé níos éasca cumraíochtaí logála saincheaptha a scríobh, ní shainmhíníonn cumraíocht logála réamhshocraithe Django logálaithe django.request agus django.security a thuilleadh. Ina áit sin, sainmhíníonn sé logálaí django ``amháin, a scagtar ag an leibhéal ``INFO`, le dhá láimhseálaí:

  • console: scagtha ag an leibhéal INFO ``agus níomhach ach amháin `debug = True.

  • mail_admins: scagtha ag an leibhéal ERROR agus níomhach ach amháin má tá debug = false`.

Mura bhfuil tú ag dul i bhfeidhm ar logáil réamhshocraithe Django, ba cheart go bhfeicfeá íosta athruithe ar iompar, ach b'fhéidir go bhfeicfidh tú roinnt logáil nua chuig an gconsól ``runserver`, mar shampla.

Má tá tú ag cur i bhfeidhm ar logáil réamhshocraithe Django, ba chóir duit seiceáil chun a fheiceáil conas a chumraíonn do chumraíocht leis na réamhshocruithe nua.

Sonraí `HttpRequest ``i dtuairisciú earráideLink to this heading

Bhí sé iomarcach na sonraí iomlána fao:class: ~django.http.httpRequest a thaispeáint gach uair a bhí sé le feiceáil mar athróg fráma cruach sa leagan HTML den leathanach dífhabhtaithe agus ríomhphost earráide. Dá bhrí sin, taispeánfaidh an t-iarratas HTTP an léiriú caighdeánach céanna anois le hathróga eile (repr (iarratas) ``). Mar thoradh air sin, baineadh an modh ``ExceptionReporterFilter.get_request_repr () ``agus an fheidhm ``django.http.build_request_repr () neamhdhoiciméadaithe.

Athraíodh ábhar leagan téacs an ríomhphoist chun rianú den struchtúr céanna a sholáthar agus i gcás iarratais AJAX. Déantar na sonraí rianaithe a léiriú ag an modh ``ExceptionReporter.get_TraceBack_Text () ``.

Cuibheoirí agus tiontairí domhanda atá ar an eolas ar chrios ama a bhaint d'amanna dátaLink to this heading

Ní chláraíonn Django oiriúntóirí agus tiontairí domhanda a thuilleadh chun faisnéis crios ama a bhainistiú ar:rang: ~ datetime.datetime luachanna a chuirtear chuig an mbunachar sonraí mar pharaiméadair fiosrúcháin nó a léitear ón mbunachar sonraí i dtorthaí fiosrúcháin. Bíonn tionchar ag an athrú seo ar thionscadail a chomhlíonann na coinníollacha seo a leanas go léir:

  • Is é an socrú: USE_TZ True.

  • Is é an bunachar sonraí SQLite, MySQL, Oracle, nó bunachar sonraí tríú páirtí nach dtacaíonn le criosanna ama. Ar amhras, is féidir leat luach connection.features.supports_timezones a sheiceáil.

  • Fiosraíonn an cód an bunachar sonraí lasmuigh den ORM, de ghnáth le ``cursor.execute (sql, params) ``.

Má tá tú ag dul paraiméadair aware:class: ~datetime.datetime chuig ceisteanna den sórt sin, ba cheart duit iad a iompú ina dáta naif i UTC:

Code
from django.utils import timezone

param = timezone.make_naive(param, timezone.utc)

Má theipeann ort é sin a dhéanamh, déanfar an tiontú mar a bhí i leaganacha níos luaithe (le rabhadh díghníomhaíochta) suas go dtí Django 1.11. Ní dhéanfaidh Django 2.0 aon chomhshó, rud a d'fhéadfadh éilliú sonraí a bheith mar thoradh air.

Má tá tú ag léamh luachanna: class: ~datetime.datetime ó na torthaí, beidh siad naif in ionad a bheith ar an eolas. Is féidir leat cúiteamh mar seo a leanas:

Code
from django.utils import timezone

value = timezone.make_aware(value, timezone.utc)

<django.db.models.query.QuerySet.raw>Ní theastaíonn aon cheann de seo uait má tá tú ag fiosrú ar an mbunachar sonraí tríd an ORM, fiú má tá ceisteanna: meth: `raw () `á úsáid agat. Tugann an ORM aire d'fhaisnéis crios ama a bhainistiú.

Allmhairítear modúil clibeanna teimpléid nuair a dhéantar teimplLink to this heading

Déanann an cúltaca: Class: ~django.template.backends.django.djangoTemplates fionnachtain anois ar mhodúil clibeanna teimpléad suiteáilte nuair a dhéantar iad a thionscnamh. <TEMPLATES-OPTIONS>Cuireann an nuashonrú seo ar chumas leabharlanna a sholáthar go sainráite tríd an eochair ``'libraries'` de:setting: OPTIONS nuair a shainmhínítear a:class: ~django.template.backends.django.djangoTemplates cúltaca. Teipeann ar earráidí allmhairithe nó comhréireachta i modúil clibeanna teimpléid go luath anois ag am tionscnaíochta seachas nuair a dhéantar teimpléad le clib a:ttag: {% load%}<load> a thiomsú ar dtús.

``django.template.base.add_to_builtins () ``baintearLink to this heading

<load>Cé gur API príobháideach a bhí ann, d'úsáid tionscadail go coitianta ``add_to_builtins () ``chun clibeanna teimpléad agus scagairí a chur ar fáil gan an clibe:ttag: {% load%} a úsáid. Tá an API seo foirmithe. <TEMPLATES-OPTIONS>Ba chóir do thionscadail leabharlanna ionsuite a shainmhíniú anois tríd an eochair ``builtins' de:setting: OPTIONS agus iad ag sainmhíniú a:class: ~django.template.backends.django.djangoTemplates cúltaca.

Fillteann simple_tag ``aschur clibeanna anois i `conditional_escapeLink to this heading

<tags-auto-escaping>Go ginearálta, ní dhéanann clibeanna teimpléad a n-ábhar go huathoibríoch, agus is é an t-iompar seo: ref: doiciméadaithe `. Maidir le clibeanna cosúil:class: `~django.template.library.inclusion_tag, ní fadhb í seo toisc go ndéanfaidh an teimpléad san áireamh autoescaping. Maidir le ``assignment_tag () ``, éalófar an t-aschur nuair a úsáidtear é mar athróg sa teimpléad.

Maidir leis na cásanna úsáide atá beartaithe de:class: ~django.template.library.simple_tag, áfach, tá sé an-éasca deireadh a chur le HTML mícheart agus b'fhéidir saothrú XSS. Mar shampla:

Code
@register.simple_tag(takes_context=True)
def greeting(context):
    return "Hello {0}!".format(context["request"].user.first_name)

I leaganacha níos sine de Django, is saincheist XSS é seo toisc nach n-éaltar user.first_name.

I Django 1.9, socraítear é seo: má tá autoescape=True` socraithe ag comhthéacs an teimpléid (an réamhshocraithe), ansin fillfidh ``simple_tag ``aschur na feidhme clibeanna le:func: ~django.utils.html.conditional_escape.

Chun do simple_tag`s a shocrú, is fearr na cleachtais seo a leanas a chur i bhfeidhm:

  • Ba chóir d'aon chód a ghineann HTML an córas teimpléad nó: func: ~django.utils.html.format_html a úsáid.

  • Má theastaíonn aschur simple_tag éalú, bain úsáid as: func: ~django.utils.html.escape nó:func: ~django.utils.html.conditional_escape.

  • Má tá tú cinnte go bhfuil tú ag cur HTML ó fhoinse iontaofa (m.sh. réimse CMS a stóráilíonn HTML a chuireann riarthóirí isteach), is féidir leat é a mharcáil mar sin ag baint úsáid:func: ~django.utils.safestring.mark_safe.

Beidh clibeanna a leanann na rialacha seo ceart agus sábháilte cibé an bhfuil siad á reáchtáil ar Django 1.9+ nó níos luaithe.

Paginator.Page_RangeLink to this heading

Paginator.page_range is now an iterator instead of a list.

I leaganacha de Django roimhe seo go 1.8, chuir Paginator.Page_Range` liost ar ais i Python 2 agus ``raon ``i Python 3. Chuir Django 1.8 liosta ar ais go comhsheasmhach, ach tá iterator níos éifeachtaí.

Is féidir an cód atá ann cheana atá ag brath ar ghnéithe sonracha liosta`, mar shampla innéacsú, a iompar tríd an iterator a thiontú go `liosta ag baint úsáide as ``liosta () ``.

Cuardach intuigthe `QuerySet `__in bainteLink to this heading

I leaganacha níos luaithe, ceisteanna mar:

Code
Model.objects.filter(related_id=RelatedModel.objects.all())

thiontódh sé go hinchinneach go:

Code
Model.objects.filter(related_id__in=RelatedModel.objects.all())

mar thoradh air SQL mar "related_id IN (SELECT id FROM...) ".

Ní tharlaíonn an __in intuigthe seo a thuilleadh mar sin is é an “IN” SQL anois “=”, agus má fhilleann an fo-cheist torthaí iolracha, caitheoidh roinnt bunachair sonraí ar a laghad earráid.

Tacaíocht brabhsálaí contrib.adminLink to this heading

Ní thacaíonn an riarachán le Internet Explorer 8 agus thíos a thuilleadh, mar tá deireadh saoil bainte amach ag na brabhsálaithe seo.

Baineadh CSS agus íomhánna chun tacú le Internet Explorer 6 agus 7. Cuireadh deilbhíní SVG in ionad deilbhíní PNG agus GIF, nach dtacaíonn Internet Explorer 8 agus níos luaithe leo.

Rinneadh uasghrádú ar an leabharlann jQuery atá leabaithe sa riarachán ó leagan 1.11.2 go 2.1.4. Tá an API céanna ag jQuery 2.x le jQuery 1.x, ach ní thacaíonn sé le Internet Explorer 6, 7, nó 8, rud a cheadaíonn feidhmíocht níos fearr agus méid comhaid níos lú. Más gá duit tacú le IE8 agus más gá duit an leagan is déanaí de Django a úsáid freisin, is féidir leat cóip an riaracháin de jQuery a shárú le do chuid féin trí fheidhmchlár Django a chruthú leis an struchtúr seo:

Text
app/static/admin/js/vendor/
    jquery.js
    jquery.min.js

SyntaxError agus Django á shuiteáil setuptools 5.5.xLink to this heading

Agus Django 1.9 nó 1.9.1 á shuiteáil agat le ``setuptools` 5.5.x, feicfidh tú:

Shell
Compiling django/conf/app_template/apps.py ...
  File "django/conf/app_template/apps.py", line 4
    class {{ camel_case_app_name }}Config(AppConfig):
          ^
SyntaxError: invalid syntax

Compiling django/conf/app_template/models.py ...
  File "django/conf/app_template/models.py", line 1
    {{ unicode_literals }}from django.db import models
                             ^
SyntaxError: invalid syntax

Tá sé sábháilte neamhaird a dhéanamh ar na hearráidí seo (suiteálfaidh Django go breá fós), ach is féidir leat iad a sheachaint trí “setuptools” a uasghrádú go leagan níos déanaí. Má tá píopa á úsáid agat, is féidir leat píopa a uasghrádú ag baint úsáide as python -m pip install -U pip a dhéanfaidh uasghrádú freisin ``setuptools`. Réitear é seo i leaganacha níos déanaí de Django mar a thuairiscítear in:doc: /releases/1.9.2.

IlghnéitheachLink to this heading

  • Tá na comhaid statacha jQuery i contrib.admin ``aistríodh isteach i bhfo-eolaire ``díolachóir/jquery`.

  • Tá an téacs a thaispeántar le haghaidh colúin null sa chealla athraithe riaracháin list_display tar éis athrú ó (Níl aon) (nó a choibhéis aistrithe) go - (sraith).

  • Baineadh Django.http.Responses.Reason_Phrases agus Django.Core.Handlers.wsgi.status_code_text. Úsáid Leabharlann Caighdeánach Python ina ionad sin: :data: http.client.responses do Python 3 agus httplib.responses do Python 2.

  • Baineadh ValueSquerySet agus ValuesListQuerySet.

  • Ní leagann an teimpléad admin/base.html fuinneog a thuilleadh. __admin_media_prefix__` nó fuinneog. __admin_utc_offset__. Bogadh tagairtí íomhá i JavaScript a d'úsáid an luach sin chun URLanna iomlána a thógáil chuig CSS le haghaidh saincheaptha níos éasca. Stóráiltear an fhritháireamh UTC ar thréith sonraí den chlib <body>```.

  • Tá bailíochtú CommaseParatedIntegerField scagtha chun luachanna cosúil le ', ', `,1', agus `1, ,2' a thoirmeasc.

  • <django.views.generic.edit.FormMixin.get_context_data>Bogadh tionscnamh foirme ón modh: meth: ProcessFormView.get () `go dtí an <django.views.generic.edit.ProcessFormView.get>modh nua:meth: `formMixin.get_context_data (). D'fhéadfadh sé seo a bheith neamhchomhoiriúnach ar ais má tá an modh get_context_data () ``tar éis an modh ``get_context_data () `a shárú gan glaoch ar ``super ()`.

  • Tá tacaíocht do PostGIS 1.5 titim.

  • Athraíodh an réimse django.contrib.sites.models.site.domain go mbe:attr: ~django.db.models.field.unique.

  • D'fhonn aonrú tástála a fhorfheidhmiú, ní cheadaítear ceisteanna bunachar sonraí de réir réamhshocraithe i dtástálacha: class: ~django.test.simpletestCase níos mó. Is féidir leat an t-iompar seo a dhíchumasú tríd an tréith aicme allow_database_queries` a shocrú go True ar do rang tástála.

  • Athraíodh ResolverMatch.App_Name chun an cosán iomlán spás ainmneacha a bheith ann i gcás spás ainmneacha neadaithe. Le haghaidh comhsheasmhachta le ResolverMatch.Namespace`, is teaghrán folamh é an luach folamh anois in ionad None.

  • Chun slándáil a chruasú, caithfidh 8 gcarachtar ar a laghad a bheith sna heochracha seisiúin.

  • Baineadh feidhm phríobháideach ``django.utils.functional.total_orders () ``. Bhí réiteach ann le haghaidh fabht ``functools.total_orders () ``i leaganacha Python níos sine ná 2.7.3.

  • Sraitheadh XML (cibé acu trí:djadmin: dumpdata nó an creat sindiciúcháin) a úsáidtear chun aon charachtair a fuair sé a aschur. Anois má tá aon charachtair rialaithe nach gceadaítear sa chaighdeán XML 1.0 san ábhar atá le sraitheadh, teipeann ar an sraitheadh le a:exc: ValueError.

  • : class: ~django.forms.charfield anois stiallann ionchur de spás bán tosaigh agus rianaithe de réir réamhshocraithe. Is féidir é seo a dhíchumasú tríd an argóint nua:attr: ~django.forms.charfield.strip a shocrú go False.

  • D'fhéadfadh go mbeadh msgid` nua ag téacs teimpléad a aistrítear agus a úsáideann dhá chomhartha faoin gcéad as a chéile nó níos mó, m.sh. %%"`, tar éis `makemessages a reáchtáil (is dóichí go mbeidh an t-aistriúchán doiléir). Marcálfar an msgid nua `#, formáid python-".

  • <django.template.Context>Mura leagtar sí:attr: request.current_app <django.http.HttpRequest.current_app>`nor:class: `context.current_app socraithe, úsáidfidh an clib teimpléad:ttag: url `spás ainmneacha an iarratais reatha anois. Socraigh ``request.current_app` go None mura dteastaíonn uait leid spás ainmneacha a úsáid.

  • Déanann an socrú: SETTING: SILENCED_SYSTEM_CHECKS teachtaireachtaí de gach leibhéal a thostú anois. Roimhe seo, clóiteadh teachtaireachtaí de leibhéal ``ERROR` nó níos airde chuig an gconsól.

  • Baintear an réimse flatpage.enable_comments ón FlatPageAdmin toisc nach bhfuil sé in úsáid ag an bhfeidhmchlár. Má úsáideann do thionscadal nó aip tríú páirtí é, :ref: `cruthaigh ModelAdmin saincheapaithe <flatpages-admin>`chun é a chur ar ais.

  • Athraíodh luach tuairisceáin de:meth: ~Django.Test.Runner.DiscoverRunner.Setup_Databases agus an chéad argóint de:meth: ~Django.Test.Runner.DiscoverRunner.TEARDOWN_Databases. Ba ghnách iad a bhí siad ina “(sean_ainmneacha, scátháin) tiúplaí. Anois níl siad ach an chéad mhír, ``old_names.

  • De réir réamhshocraithe: class: ~django.test.liveservertestcase iarracht calafort atá ar fáil sa raon 8081-8179 a aimsiú in ionad triail a bhaint as calafort 8081.

  • Seiceálann an córas le haghaidh: class: ~django.contrib.admin.modelAdmin cásanna anois seachas ranganna.

  • Tá an API príobháideach chun pleananna imirce measctha a chur i bhfeidhm ar chúiseanna feidhmíochta Is éard atá i bpleananna measctha liosta imirce ina bhfuil cuid acu á chur i bhfeidhm agus nach bhfuil cuid eile á chur i bhfeidhm.

  • Bogtar na ranganna tuairiscithe réad samhail gaolmhara i django.db.models.fields.related (API príobháideach) ón modúl related` go related_descriptors` agus athainmnítear mar seo a leanas:

    • Is é ReversesingleRelateDObjectDescriptor ForwardmanyTooneDescriptor

    • Is é SingleRelateDObjectDescriptor ReverseOneTooneDescriptor

    • Is é ForeignRelateDObjectsDescriptor ReverseManyToOneDescriptor

    • Is é ManyRelateDObjectsDescriptor ManyTomanyDescriptor

  • Má chuireann tú amharc saincheap:data: ~django.conf.urls.handler404 i bhfeidhm, caithfidh sé freagra a thabhairt ar ais le cód stádais HTTP 404. Úsáid: aicme: ~django.http.httpResponseNotFound nó pas status = 404 chuig an: aicme: ~django.http.httpResponse. Seachas sin, :setting: ní oibreoidh APPEND_SLASH i gceart le debug=false.

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

``tascanna_assignment_tag () ``Link to this heading

Chuir Django 1.4 an cúntóir assignment_tag ``le cruthú clibeanna teimpléad a stóráilíonn athróg teimpléad torthaí a mhaolú. an cumas céanna seo faighte ag an gcúntóir: Meth: `~django.template.library.simple_tag`, rud a fhágann go bhfuil an ``assignment_tag ``as feidhm. Ba chóir clibeanna a úsáideann ``assignment_tag a nuashonrú chun simple_tag a úsáid.

{% timthriall%} comhréiteach le hargóintí scartha le camógLink to this heading

Tacaíonn an clibe:ttag: timthriall le sean-chomhréir níos ísle ó leaganacha Django roimhe seo:

Django template
{% cycle row1,row2,row3 %}

Ba chúis lena pháirsíú fabhtanna leis an gcomhréireacht reatha, mar sin bainfear tacaíocht don sean-chomhréireacht i Django 1.10 tar éis díscrúdú luathaithe.

Argóint ForeignKey agus OneToonefield on_deleteLink to this heading

D'fhonn feasacht a mhéadú faoi scriosadh samhail cascading, beidh an argóint on_delete` de ForeignKey` agus OneToonefield ag teastáil i Django 2.0.

Nuashonraigh samhlacha agus imirce reatha chun an argóint a shocrú go sainráite. Ós rud é gurb é Models.cascade` an réamhshocraithe, cuir on_delete=Models.cascade le gach ForeignKey agus OneToOneField nach n-úsáideann rogha difriúil. Is féidir leat é a chur ar aghaidh mar an dara argóint seasaimh mura bhfuil cúram ort faoi chomhoiriúnacht le leaganacha níos sine de Django.

Athruithe Field.relLink to this heading

Field.rel agus tá a modhanna agus tréithe athraithe chun API na réimsí gaolmhara a mheaitseáil. Athainmnítear an tréith Field.rel go remote_field` agus athraítear nó athainmnítear go leor dá modhanna agus tréithe.

Is é aidhm na hathruithe seo API doiciméadaithe a sholáthar do réimsí caidrimh.

Modhanna saincheaptha Geomanager agus ``GeoQuerySet ``Link to this heading

Cuireadh nathanna geografacha coibhéiseach in anótaí in ionad gach modh saincheaptha GeoquerySet ``( limistéar () , fad () , gml () ,...). bhrí sin an saincheaptha ``Geomanager a shocrú do mhúnlaí cumasaithe GIS as feidhm anois. Chomh luath agus nach nglaonn do chód ar aon cheann de na modhanna dlite, is féidir leat na línte ``objects = GeoManager () `a bhaint as do mhúnlaí.

Athraigh APIs lódóra teimpléidLink to this heading

Nuashonraíodh lódóirí teimpléad Django chun teimpléad athfhillteach a leathnú. Bhí API lódóir teimpléad nua ag teastáil leis an athrú seo. Tá na sean-mhodhanna load_template () ``agus ``load_template_sources () díluachtaithe anois. <custom-template-loaders>Is féidir sonraí faoin API nua a aimsiú:ref: `sa dhoiciméadú lódóirí teimpléad `.

Ag dul trí thúpla nó app_name chuig ``include () ``Link to this heading

Cuireadh an chuid spás ainmneacha a bhaineann le tuple a chur mar argóint chun include () ``a chur in ionad an argóint ``spás ainmneacha` a chur ar aghaidh chuig include () `. Mar shampla:

Code
polls_patterns = [
    url(...),
]

urlpatterns = [
    url(r"^polls/", include((polls_patterns, "polls", "author-polls"))),
]

éiríonn sé:

Code
polls_patterns = (
    [
        url(...),
    ],
    "polls",
)  # 'polls' is the app_name

urlpatterns = [
    url(r"^polls/", include(polls_patterns, namespace="author-polls")),
]

Cuireadh an argóint app_name` chun include () ``a chur in ionad trí dhá tuple (mar thuas) a rith, nó réad nó modúl a rith le tréith ``app_name` (mar atá thíos). Má tá an app_name socraithe ar an mbealach nua seo, ní theastaíonn an argóint spás ainm a thuilleadh. Beidh sé réamhshocraithe go luach app_name. Mar shampla, athraítear na patrúin URL sa rang teagaisc ó:

mysite/urls.py
Python
urlpatterns = [url(r"^polls/", include("polls.urls", namespace="polls")), ...]

chuig:

mysite/urls.py
Python
urlpatterns = [
    url(r"^polls/", include("polls.urls")),  # 'namespace="polls"' removed
    ...,
]
polls/urls.py
Python
app_name = "polls"  # added
urlpatterns = [...]

Ciallaíonn an t-athrú seo freisin go bhfuil an seanbhealach chun sampla Admin Site a áireamh as dul in iúl. Ina áit sin, pas admin.site.urls` go díreach chuig ``django.conf.urls.url () ``:

urls.py
Python
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r"^admin/", admin.site.urls),
]

Teastaíonn spás ainmneacha feidhmchláir URL má shocraíonn spás ainmneacha samplaLink to this heading

San am atá caite, bheadh spás ainmneacha sampla gan spás ainmneacha feidhmchláir ar an gcuspóir céanna le spás ainmneacha an fheidhmchláir, ach ní raibh sé dodhéanta na patrúin a aisiompú má bhí spás ainmneacha feidhmchláir leis an ainm céanna. Áirítear a shonraíonn spás ainmneacha sampla a éilíonn go socraíonn an URLConf san áireamh spás ainmneacha feidhmchláir.

Paraiméadar current_app chuig tuairimí contrib.authLink to this heading

Tá an struchtúr seo a leanas ag gach tuairim i django.contrib.auth.views:

Text
def view(request, ..., current_app=None, ...):

    ...

    if current_app is not None:
        request.current_app = current_app

    return TemplateResponse(request, template_name, context)

De réir Django 1.8, socraítear current_app ar an réad iarraidh`. Ar mhaithe le comhsheasmhacht, éilfidh na tuairimí seo ar an nglaoiteoir ``current_app a shocrú ar an iarraidh in ionad é a rith in argóint ar leithligh.

``django.contrib.gis.geoip ``Link to this heading

Cuireann an modúl:mod: django.contrib.gis.geoip2 in ionad django.contrib.gis.geoip. Soláthraíonn an modúl nua API den chineál céanna ach amháin nach soláthraíonn sé na modhanna comhoiriúnachta API GeoIP-Python oidhreachta.

IlghnéitheachLink to this heading

  • Tá an argóint lag chuig ``django.Dispatch.Signals.Signal.Disconnect () ``a dhíchur mar níl aon éifeacht aige.

  • Tá an modh check_aggregate_support () ``de `Django.db.backends.base.baseDatabaseOperations a dhíchur agus bainfear é i Django 2.0. Ba chóir an ``check_expression_support () ``níos ginearálta a úsáid ina ionad.

  • django.forms.extras imithe. Is féidir leat aimsi:class: ~django.forms.selectDateWidget i django.forms.widgets (nó django.forms) ina ionad sin.

  • Tá API príobháideach ``django.db.models.fields.add_lazy_relations () ``díluachtaithe.

  • Tá an maisitheoir django.contrib.auth.tests.utils.skipifCustomUser () ``díluaite. Leis na hathruithe fionnachtana tástála i Django 1.6, reáchtáiltear na tástálacha le haghaidh aipeanna `django.contrib ``a thuilleadh mar chuid de thionscadal an úsáideora. bhrí sin, theastaíonn an maisitheoir ``@skipIfCustomUser a thuilleadh chun tástálacha a mhaisiú i django.contrib.auth.

  • Má shaincheapann tú roinnt: ref: láimhseálaithe earráide <error-views>, díchuirtear na sínithe amharc nach bhfuil ach paraiméadar iarratais amháin acu. Ba chóir go nglacfadh na tuairimí anois leis an dara paraiméadar suímh ```eisceacht'.

  • Tá na tréithe django.utils.feedgenerator.atom1feed.mime_type agus Django.utils.feedgenerator.rssfeed.mime_type a dhíchur i bhfabhar content_type.

  • Signer now issues a warning if an invalid separator is used. This will become an exception in Django 1.10.

  • Django.db.Models.Field. _get_val_from_obj () ``díluaite i bhfabhar ``field.value_from_object ().

  • Django.Template.Loaders.Eggs.Loader a dhíchur mar iarratais a dháileadh mar ní mholtar uibheacha.

  • Tá an argóint eochairfhocal callable_obj chuig ``simpletestCase.assertRaisesMessage () ``a dhíchur. Rith an glaoch mar argóint seasmhach ina ionad sin.

  • Tá an tréith allow_tags` ar mhodhanna ModelAdmin a dhíchur. Úsáid: func: ~django.utils.html.format_html, :func: ~django.utils.html.format_html_join, nó:func: ~django.utils.safestring.mark_safe agus luach tuairisceáin an mhodha á thógáil ina ionad sin.

  • Tá an argóint eochairfhocal enclosure chuig SyndicationFeed.add_item () ``díluachtaithe. Úsáid an argóint nua ``enclosures` a ghlacann le liosta de rudaí Inclosure in ionad ceann amháin.

  • Tá na hainmneacha Django.Template.Loader.LoaderOrigin` agus Django.Template.Base.StringOrigin do Django.Template.Base.Origin` a dhíchur.

Gnéithe bainte i 1.9Link to this heading

Tá na gnéithe seo tar éis deireadh a dtimthriall díscrúdaithe bainte amach agus baintear iad i Django 1.9. Féach: Ref: deprecated-features-1.7 le haghaidh sonraí, lena n-áirítear conas úsáid na ngnéithe seo a bhaint.

  • Baintear django.utils.dictconfig.

  • Baintear django.utils.importlib.

  • Baintear django.utils.tzinfo.

  • Baintear django.utils.unittest.

  • Baintear an t-ordú syncdb.

  • Baintear django.db.models.signals.pre_syncdb agus django.db.models.signals.post_syncdb.

  • Baintear tacaíocht do allow_syncdb` ar ródairí bunachar sonraí.

  • Baintear sioncrónú uathoibríoch aipeanna gan imirce. Tá imirce éigeantach do gach aip mura rachaidh tú ar an roghna:option: migration --run-syncdb.

  • Baintear na horduithe bainistíochta SQL le haghaidh aipeanna gan imirce, sql, sqlall`, sqlclear`, sqldropindexes`, agus sqlindexes.

  • Baintear tacaíocht do luchtú uathoibríoch daingneáin ``initial_data ``agus sonraí tosaigh SQL.

  • Caithfear gach samhail a shainiú taobh istigh d'fheidhmchlár suiteáilte nó sainmhíniú: attr: ~django.db.models.options.app_label a dhearbhú. Ina theannta sin, ní féidir iad a iompórtáil sula luchtaítear a n-iarratas. Go háirithe, ní féidir samhlacha a iompórtáil taobh istigh de phacáiste fréimhe feidhmchláir.

  • Baintear an tsamhail agus an fhoirm Ipaddressfield. Tá réimse stub fós ann le haghaidh comhoiriúnachta le himirce stairiúla.

  • Ní thacaítear le ``AppCommand.handle_app () ``a thuilleadh.

  • Ní féidir requestsite agus get_current_site () ``a iompórtáil ó ``django.contrib.sites.models a thuilleadh.

  • Baintear tacaíocht FastCGI tríd an ordú bainistíochta ``runfcgi`.

  • Baintear Django.utils.DataStructures.Sorteddict.

  • Baintear ModelAdmin.Declared_FieldSets.

  • Baintear na modúil util a sholáthraíodh comhoiriúnacht ar ais:

    • django.contrib.admin.util

    • django.contrib.gis.db.backends.util

    • django.db.backends.util

    • django.forms.util

  • Baintear ModelAdmin.get_FormSets.

  • Tugadh isteach na shims comhoiriúnacha ar chúl chun an BaseMemcachedCache a athainmniú. Baintear modh _get_memcache_timeout () ``chun ``get_backend_timeout ().

  • Baintear na roghanna --natural agus -n le haghaidh: djadmin: dumpdata.

  • Baintear an argóint use_natural_keys do serializers.serialize () `.

  • Baintear API príobháideach ``django.forms.forms.get_declared_fields () ``.

  • Baintear an cumas SplitDateTimeWidget le DateTimeField` a úsáid.

  • Baintear an maoin WSGIrequest.request`.

  • Baintear an rang Django.utils.DataStructures.Mergedict.

  • Baintear na cóid teanga zh-cn` agus zh-tw`.

  • Baintear an ``django.utils.functional.memoize () ``inmheánach.

  • Baintear django.core.cache.get_cache.

  • Baintear django.db.models.loading.

  • Ní féidir argóintí inghlaonta a chur chuig ceisteanna a thuilleadh.

  • Baintear BaseCommand.requires_model_validation i bhfabhar requires_system_checks. Cuirtear seiceálacha riaracháin in ionad bailíochtóirí riaracháin.

  • Baintear na tréithe ModelAdmin.Validator_Class agus default_validator_class.

  • Baintear ``ModelAdmin.validate () ``.

  • Baintear Django.db.backends.databaseValidation.validate_field i bhfabhar an modh check_field.

  • Baintear an t-ordú bainistíochta bailíochta.

  • Baintear django.utils.module_loading.import_by_path i bhfabhar django.utils.module_loading.import_string.

  • Baintear clibeanna teimpléad ssi agus url ``ón leabharlann clib teimpléad ``todhcha`.

  • Baintear ``django.utils.text.javascript_quote () ``.

  • Ní thacaítear le socruithe tástála bunachar sonraí mar iontrálacha neamhspleácha i socruithe bunachar sonraí, réamhshocraithe ag TEST_, a thuilleadh.

  • Baintear an rogha cache_choices to:class: ~django.forms.ModelChoiceField agus:class: ~django.forms.ModelMultipleChoiceField.

  • Tá luach réamhshocraithe den tréith: attr: RedirectView.permanent <django.views.generic.base.RedirectView.permanent>`athraithe ó ``True` go False.

  • Baintear Django.Contrib.SiteMaps.FlatPageSitemap i bhfabhar Django.Contrib.FlatPages.Sitemaps.FlatPageSitemap.

  • Baintear API príobháideach Django.Test.utils.TestTemplateLoader.

  • Baintear an modúl django.contrib.contenttypes.generic.