Nótaí scaoilte Django 1.6Link to this heading

6 Samhain, 2013

Fáilte go dtí Django 1.6!

Clúdaíonn na nótaí scaoilte seo na:ref: gnéithe nua <whats-new-1.6>, chomh maith le roinnt: ref: athruithe neamh-chomhoiriúnacha ar chúl<backwards-incompatible-1.6> a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 1.5 nó leaganacha níos sine. <deprecated-features-1.6>Tá roinnt gnéithe titim againn freisin, atá mionsonraithe in:ref: ár bplean díghabhála <deprecation-removed-in-1.6>, agus chuireamaire:ref: tús leis an bpróiseas díghabhála do roinnt gnéithe.

Comhoiriúnacht PythonLink to this heading

Éilíonn Django 1.6, cosúil le Django 1.5, Python 2.6.5 nó os a chionn. Tacaítear le Python 3 go hoifigiúil freisin. Molaimid** go hard** an mionscaoileadh is déanaí do gach sraith Python tacaithe (2.6.X, 2.7.X, 3.2.X, agus 3.3.X).

Beidh Django 1.6 an tsraith scaoilte deiridh chun tacú le Python 2.6; ag tosú le Django 1.7, is é 2.7 an leagan Python íosta a thacaítear.

Ní thacaítear le Python 3.4, ach cuirfear tacaíocht leis i Django 1.7.

Cad atá nua i Django 1.6Link to this heading

Teimpléid tionscadail réamhshocraithe agus aipLink to this heading

Tá na teimpléid réamhshocraithe a úsáideann: djadmin: startproject agus:djadmin: startapp simplithe agus nuachóirithe. Tá an: doc: admin </ref/contrib/admin/index> cumasaithe anois de réir réamhshocraithe i dtionscadail nua; níl an creat:doc: `sites</ref/contrib/sites> `a thuilleadh. :ref: Tá `cosc clickjacking <clickjacking-prevention>`ar siúl anois agus tá an bunachar sonraí réamhshocraithe go SQLite.

<custom-app-and-project-templates>Mura n-oireann na teimpléid réamhshocraithe do do chlas, is féidir leat: ref: `teimpléid tionscadail agus aipeanna saincheaptha `a úsáid.

Bainistíocht idirbheart níos fearrLink to this heading

Rinneadh athchóiriú ar bhainistíocht idirbheart Django. Tá autocommit ar leibhéal bunachar sonraí casaithe air anois de réir réamhshocraithe. Fágann sé seo láimhseáil idirbheart níos folláine agus ba cheart go bhfeabhsó Rinneadh na APIs atá ann cheana a dhíchur, agus tugadh APIs nua isteach, mar a thuairiscítear in:doc: doiciméid bainistíochta idirbhearta </topics/db/transactions>.

Nasc bunachar sonraí leanúnachaLink to this heading

Tacaíonn Django anois leis an nasc bunachar sonraí céanna a athúsáid le haghaidh roinnt iarratais. Seachnaíonn sé seo an lasbhreas a bhaineann le nasc a athbhunú ag tús gach iarratais. Le haghaidh comhoiriúnacht ar ais, tá an ghné seo díchumasaithe de réir réamhshocraithe Féach: ref: persistent-database-nastions le haghaidh sonraí.

Tástálacha a fháil in aon mhodúl tástálaLink to this heading

Seolann Django 1.6 le rádálaí tástála nua a cheadaíonn níos mó solúbthachta i suíomh na dtástálacha. Ní bhfuair an rádálaí roimhe seo (Django.test.simple.DjangoTestSuiterunner`) tástálacha ach sna modúil models.py agus tests.py de phacáiste Python in:setting: INSTALLED_APPS.

Úsáideann an rádálaí nua (Django.Test.Runner.DiscoverRunner) na gnéithe fionnachtana tástála atá tógtha i unittest2` (an leagan de unittest sa leabharlann caighdeánach Python 2.7+, agus curtha le Django). Le fionnachtain tástála, is féidir tástálacha a shuíomh in aon mhodúl a mheaitseálann a n-ainm leis an bpatrún test*.py.

Ina theannta sin, cuireadh na lipéid tástála ar fáil do . Caithfidh tástáil /manage.py chun tástálacha sonracha a ainmniú le reáchtáil caithfidh cosáin iomlána poncaí Python (nó cosáin eolaire) a bheith anois, seachas ``Applabel.TestCase.test_METHOD_name bréag-bhealaí. Ligeann sé seo tástálacha a reáchtáil atá suite in áit ar bith i do bhunachar cóid, seachas in: setting: INSTALLED_APPS amháin. Le haghaidh tuilleadh sonraí, féach:doc: `/topics/tástáil/innéacs `.

<new-test-runner>Tá an t-athrú seo chomhoiriúnach ar chúl; féach na:ref: `nótaí neamh-inchomhoiriúnachta ar ais `.

Comhiomlánú feasach ar chrios amaLink to this heading

</topics/i18n/timezones> <django.db.models.query.QuerySet.dates>Níor oibrigh an tacaíocht do: doc: criosanna ama' a tugadh isteach i Django 1.4 go maith le: meth: `QuerySet.dates () `: rinneadh comhiomlánú i gcónaí i UTC. Ardaíodh an teorannú seo i Django 1.6. Úsáid: Meth: `QuerySet.DateTimes () `chun comhiomlánú feasach ar chrios ama a a: class: `~django.db.models.DateTime <django.db.models.query.QuerySet.datetimes>Field.

Tacaíocht do phointí sábhála i SQLiteLink to this heading

<savepoints-in-sqlite>Cuireann Django 1.6 tacaíocht le haghaidh pointí sábhála i SQLite, le roinnt: ref: `teorainneacha `.

Réimse samhail BinaryfieldLink to this heading

Ceadaíonn réimse samhail nua:class: Django.db.Models.BinaryField sonraí dénártha amh a stóráil sa bhunachar sonraí.

Giuirléidí foirm GeodJangoLink to this heading

Soláthraíonn GeodJango anois:doc: `réimsí foirm agus giuirléid' dá réimsí geo-speisialaithe. </ref/contrib/gis/forms-api> Tá siad bunaithe ar OpenLayers de réir réamhshocraithe, ach is féidir iad a shaincheapadh chun aon creat JS eile a úsáid.

Cuireadh ordú bainistíochta “seiceáil” leis chun comhoiriúnacht a fhíorLink to this heading

A: DjaDmin: Cuireadh ordú bainistíochta 'check' leis, rud a chuireann ar chumas duit a fhíorú an bhfuil do chumraíocht reatha (dírithe ar shocruithe faoi láthair) comhoiriúnach leis an leagan reatha de Django.

<django.db.models.Model.save () >:meth: Athraigh algartam `Model.save ()Link to this heading

Déanann an modh: Meth: Model.save () iarracht anois ``<django.db.models.Model.save () > UPDATE` an bunachar sonraí a dhéanamh go díreach má tá príomhluach ag an gcás. Roimhe seo rinneadh SELECT chun a chinneadh an raibh gá le UPDATEINSERT. Níl ach ceist amháin ag teastáil ón algartam nua chun sraith atá ann cheana a nuashonrú agus bhí dhá cheann ag teastáil ar an sean- <django.db.models.Model.save () >Féach: Meth: `Model.save () `le haghaidh tuilleadh sonraí.

I roinnt cásanna neamhchoitianta ní thuairiscíonn an bunachar sonraí gur aimsíodh sraith mheaitseála nuair a dhéantar UPDATE. Sampla is ea an truicear PostgreSQL ON UPDATE a fhilleann NULL. I gcásanna den sórt sin is féidir bratach: attr: django.db.models.options.select_on_save a shocrú chun sábháil a chur i bhfeidhm chun an sean-algartam a úsáid.

MionghnéitheLink to this heading

  • Is féidir le cúltaca fíordheimhnithe Ceaduithead a ardú chun teip ar an slabhra fíordheimhnithe láithreach.

  • Is féidir an bhratach HTTPONLY a shocrú ar an bhfianán CSRF le:setting: CSRF_COOKIE_HTTPONLY.

  • Seiceálann an ``assertQuerySetEqual () ``anois ar ordú neamhshainithe agus ardaíonn sé: exc: ValueError má fheictear ordú neamhshainithe. Feictear go bhfuil an t-ordú neamhshainithe mura n-ordaítear an ``QuerySet` a thugtar agus tá níos mó ná luach ordaithe amháin le comparáid a dhéanamh ina gcoinne.

  • Cuireadh leis: Meth: ~django.db.models.query.queryset.earliest le haghaidh siméadracht le:meth: ~django.db.models.query.queryset.latest.

  • Chomh maith le:lookup: year, :lookup: month agus:lookup: day, tacaíonn an ORM anois:lookup: hour, :lookup: nóiméad agus:lookup: soicin cuardaigh.

  • Fillteann Django anois gach eisceacht: pep: 249.

  • Úsáideann na giuirléidí réamhshocraithe daga:class: ~django.forms.emailField, :class: ~django.forms.URLField, :class: ~django.forms.IntegerField, :class: ~django.forms.floatfield agus:class: ~django.forms.decimalfield na tréithe nua cineál atá ar fáil i HTML5 (type = 'email'`, `type = 'url ``, `type = 'url, type = 'uimhre'`). Tabhair faoi deara, mar gheall ar thacaíocht neamhréitiúil don chineál ionchuir ``uimhir ``le huimhreacha logánaithe i mbrabhsálaithe reatha, ní úsáideann Django é ach nuair nach bhfuil réimsí uimhriúla logánaithe.

  • Is féidir an argóint uimhre d':ref: `aistriúcháin iolrach leisciúil <lazy-plural-translations>`a sholáthar ag am aistriúcháin seachas ag am sainmhínithe.

  • Maidir le horduithe bainistíochta saincheaptha: Déantar fíorú ar láithreacht socruithe bailí in orduithe a iarrann é tríd an rogha inmheánach BaseCommand.CAN_IMPORT_SETTINGS` a úsáid go neamhspleách ó láimhseáil an áitiúil ba chóir a bheith gníomhach le linn forghníomhú an ordaithe. Is féidir leis an rogha inmheánach nua ``BaseCommand.leave_locale_alone tionchar a imirt ar an dara ceann anois. Féach:ref: management-commands-and-locales le haghaidh tuilleadh sonraí.

  • Tá an: Attr: ~django.views.generic.edit.deletionMixin.success_URL o:class: ~django.views.generic.edit.deletionMixin idirphóilte anois le __dict__ a object`.

  • HttpResponseRedirect and HttpResponsePermanentRedirect now provide an url attribute (equivalent to the URL the response will redirect to).

  • Úsáideann cúltaca taisce MemcachedCache an prótacal is déanaí:mod: pickle atá ar fáil anois.

  • Added:Class: ~django.contrib.messages.views.successMessageMixin a sholáthraíonn tréith success_message d'aicmí bunaithe le haghaidh: class: ~django.views.generic.edit.formView ranganna bunaithe.

  • Cuireadh na roghanna: attr: Django.db.Models.ForeignKey.DB_Constraint agus:attr: Django.db.Models.manyTomanyField.DB_Constraint leis.

  • Tá an leabharlann jQuery leabaithe sa riarachán uasghrádaithe go leagan 1.9.1.

  • <django.contrib.syndication.Feed.get_context_data>Is féidir le fothaí sindiciúcháin (:mod: django.contrib.syndication) comhthéacs breise a chur tríd anois chun teimpléid a bheathú ag baint úsáide as glao nua: meth: `feed.get_context_data () `.

  • Tá <field_name>rang ```column- ``ag na colúin liosta riaracháin sa HTML ionas gur féidir ceanntásc na gcolún a stíleáil le CSS, m.sh. chun leithead colún a shocrú.

  • Is féidir an: Ref: `leibhéal aonrú <database-isolation-level>`a shaincheapadh faoi PostgreSQL.

  • Tá meas anois ag an gclib teimpléad:ttag: blocktrans TEMPLATE_STRING_IF_INVALID d'athróga nach bhfuil i láthair sa chomhthéacs, díreach cosúil le tógáil teimpléad eile.

  • Cuirfidh SimpleLazyObjects léirithe níos cabhrach i láthair anois i gcásanna dífhabhtaithe bhlaosc.

  • Gineálach:Class: ~django.contrib.gis.db.models.geometryfield is féidir a chur in eagar anois leis an ngiuirléid OpenLayers sa riarachán.

  • Tá a: doc: seicliosta imscartáil sa doiciméad</howto/deployment/checklist> ú.

  • Fuair an t-ordú: Djadmin: diffsettings rogha --all.

  • Django.Forms.Fields.Field. Glaonn __init__ anois super () ``, ag ligean do mheascáin allamuigh modhanna ``__init__ () a chur i bhfeidhm a ghlaofar go hiontaofa.

  • The validate_max parameter was added to BaseFormSet and formset_factory(), and ModelForm and inline versions of the same. The behavior of validation for formsets with max_num was clarified. The previously undocumented behavior that hardened formsets against memory exhaustion attacks was documented, and the undocumented limit of the higher of 1000 or max_num forms was changed so it is always 1000 more than max_num.

  • Cuireadh bcryptsha256PasswordHasher` leis chun an saincheist a bhriseadh pasfhocal le bcrypt a réiteach.

  • Pillow is now the preferred image manipulation library to use with Django. PIL is pending deprecation (support to be removed in Django 1.8). To upgrade, you should first uninstall PIL, then install Pillow.

  • ModelForm accepts several new Meta options.

    • Déanfar réimsí atá san áireamh sa liosta localized_fields logánaithe (trí localize a shocrú ar an réimse foirme).

    • Is féidir na roghanna labels, help_texts` agus error_messages a úsáid chun na réimsí réamhshocraithe a shaincheapadh, féach:ref: modelforms-overriding-default-fields le haghaidh sonraí.

  • Glacann an argóint roghnaí le réimsí samhlacha anois le athrinnithe athraitheacha in ionad athraitheanta liostaí nó tupáil a bheith ag teastáil.

  • Is féidir an abairt chúis a shaincheapadh i bhfreagraí HTTP ag baint úsáidea:attr: ~django.http.httpResponse.Reason_Phrase.

  • Nuair a thugtar URL an chéad leathanaigh eile le haghaidh django.contrib.auth.views.logout () ``, `django.contrib.auth.views.password_reset (), django.contrib.auth.views.password_reset_confirm () `, agus django.contrib.auth.views.wordpass_change (), is féidir leat ainmneacha URL a rith anois agus réiteofar iad.

  • Sonraíonn an rogha nua:option: dumpdata --pks eochracha príomhúil na rudaí le dumpáil. Ní féidir an rogha seo a úsáid ach le samhail amháin.

  • Cuir modhanna QuerySet leis: meth: ~django.db.models.query.queryset.first agus:meth: ~django.db.models.query.queryset.last ar modhanna áisiúlachta iad a thugann an chéad réad nó an rud deireanach a mheaitseálann na scagairí. Tugann sé ar ais None mura bhfuil aon rudaí ann a mheaitseáil.

  • View and RedirectView now support HTTP PATCH method.

  • Glacann GenericForeignKey argóint roghnach for_concrete_model anois, a ligeann don réimse tagairt do mhúnlaí seachfhreastalaí nuair a shocraítear é go False. Is é an réamhshocrú True chun an sean-iompar a choinneáil.

  • Stórálann an LocaleMiddleware an teanga ghníomhach sa seisiún anois mura bhfuil sí i láthair ann. Cuireann sé seo cosc ​​​​ar chaillteanas socruithe teanga tar éis sruthlú seisiúin, e.g. logáil amach.

  • SuspiciousOperation has been differentiated into a number of subclasses, and each will log to a matching named logger under the django.security logging hierarchy. Along with this change, a handler400 mechanism and default view are used whenever a SuspiciousOperation reaches the WSGI handler to return an HttpResponseBadRequest.

  • Cuimsíonn an eisceacht: EXC: ~django.db.models.model.doesNotExist teachtaireacht anois a léiríonn ainm na tréithe a úsáidtear don chuardach.

  • Ní theastaíonn argóint eochairfhocal amháin ar a laghad ag an modh: Meth: ~django.db.models.query.queryset.get_or_create a thuilleadh.

  • Cuimsíonn an ranga:Class: ~Django.Test.SimpleTestCase cúntóir dearbhaithe nua chun earráidí foirmset a thástáil: ``Django.Test.SimpleTestCase.AssertFormSetError () ``.

  • Is féidir liosta na réimsí gaolmhara a cuireadh le a:class: ~django.db.models.query.queryset trí:meth: ~django.db.models.queryset.select_related a ghlanadh trí ``select_related (None) ``.

  • Is féidir na modhanna: Meth: ~django.contrib.admin.inlineModelAdmin.get_extra agus:meth: ~django.contrib.admin.inlineModelAdmin.get_max_num ar: class: ~django.contrib.admin.inlineModelAdmin a shaincheapadh chun líon breise agus uasta na bhfoirmeacha inlíne a shaincheapadh.

  • Tá modh a: meth: ~django.forms.formsets.baseFormSet.TOTAL_ERROR_COUNT ag Formsets anois.

  • ModelForm fields can now override error messages defined in model fields by using the error_messages argument of a Field’s constructor. To take advantage of this new feature with your custom fields, see the updated recommendation for raising a ValidationError.

  • ModelAdmin now preserves filters on the list view after creating, editing or deleting an object. It's possible to restore the previous behavior of clearing filters by setting the preserve_filters attribute to False.

  • <django.views.generic.edit.FormMixin.prefix>Cuireadh leis: Meth: FormMixin.Get_Prefix `(a fhilleann: attr: `FormMixin.Prefix<django.views.generic.edit.FormMixin.get_prefix> de réir réamhshocraithe) chun ceadú: attr: ~django.forms.form.prefix na foirme a shaincheapadh.

  • Is féidir le ceisteanna amha (Manager.raw () ``nó `cursor.execute ()`) an stíl pharaiméadar “pyformat” a úsáid anois, áit a dtugtar ``% (name) s'` ``sealbhóirí ionaid sa cheist agus cuirtear na paraiméadair mar fhoclóir seachas liosta (ach amháin ar SQLite). Tá sé seo indéanta le fada (ach níor thacaíodh sé go hoifigiúil) ar MySQL agus PostgreSQL, agus tá sé ar fáil anois ar Oracle freisin.

  • 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 do phasfhocail nó ar úsáideoirí atá ann cheana a rinne fo-aicmiú Django.contrib.auth.hashers.pbkdf2PasswordHasher chun an luach réamhshocraithe a athrú. Pasfhocal: ref: 'uasghrádófar <password-upgrades>`chun an comhaireamh athraithe nua a úsáid de réir mar is gá.

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

Samhail nua bainistíochta idirbheartLink to this heading

Athruithe iompraíochtaLink to this heading

Tá autocommit ar leibhéal bunachar sonraí cumasaithe de réir réamhshocraithe i Django 1.6. Cé nach n-athraíonn sé seo spiorad ginearálta bainistíochta idirbheart Django, tá cúpla neamhoiriúnacht cúil ann.

Savepoints agus AssertNumqueriesLink to this heading

D'fhéadfadh ráitis bhreise a bheith mar thoradh ar na hathruithe i mbainistíocht idirbheart chun pointí sábhála a chruthú, a scaoileadh Is dóichí go dtarlóidh sé seo le SQLite, ós rud é nár thacaigh sé le pointí sábhála go dtí an scaoileadh seo.

Má theipeann ar thástálacha ag baint úsáidea:meth: ~django.test.transactionTestCase.assertNumqueries mar gheall ar líon níos airde ceisteanna ná mar a bhíothas ag súil leis, seiceáil go bhfuil baint ag na ceisteanna breise le pointí sábhála, agus coigeartaigh líon na gceisteanna a bhfuil súil leis dá réir.

Rogha Autocommit do PostgreSQLLink to this heading

I leaganacha roimhe seo, ní raibh autocommit ar leibhéal bunachar sonraí ach rogha do PostgreSQL, agus cuireadh faoi dhíchumasú é de réir réamhshocraithe. Déantar neamhaird ar an rogha seo anois agus is féidir é a bhaint.

Rathóir tástála nuaLink to this heading

D'fhonn comhsheasmhacht níos mó a choinneáil le modúl unittest` Python, ní thacaíonn an reathóir tástála nua (Django.Test.Runner.DiscoverRunner) go huathoibríoch le roinnt cineálacha tástálacha a thacaigh an rádálaí roimhe seo:

  • Ní aimsífear agus ní reáchtálfar tástálacha i gcomhaid models.py agus tests/__init__.py a thuilleadh. Bog iad chuig comhad a dtosaíonn a n-ainm le tást.

  • Ní aimsífear doctests go huathoibríoch a thuilleadh. <doctest-unittest-api>Chun doctests a chomhtháthú i do shraith tástála, lean na:ref: `moltaí i ndoiciméadú Python `.

Cuireann Django leagan modhnaithe den mhodúl: mod: doctest ó leabharlann caighdeánach Python (i django.test. _doctest`) agus tá roinnt fóntais doctest breise ann. Tá na fóntais seo díscríofa agus bainfear iad i Django 1.8; ba chóir sraith doctest a nuashonrú chun oibriú le modúl doctest an leabharlainne caighdeánach (nó a thiontú go tástálacha comhoiriúnacha ``unittest`).

Más mian leat moill a chur ar nuashonruithe ar do tsraith tástála, is féidir leat do shocrú: setting: TEST_RUNNER a shocrú go DJANGO.TEST.SIMPLE.DJANGOTESTSUITERUNNER chun an sean-iompar tástála a chur ar ais go hiomlán. Tá DjangoTestSuiterunner díluaite ach ní bhainfear é as Django go dtí leagan 1.8.

Baint de Django.contrib.gis.tests.geodjangoTestSuiterunner ``rádaí tástála saincheaptha GeodJangoLink to this heading

Tá sé seo d'fhorbróirí atá ag obair ar an bhfeidhmchlár GeodJango féin agus a bhaineann leis an mír thuas faoi athruithe sna reathaithe tástála:

Baineadh an reathnóir tástála Django.contrib.gis.tests.geodjangoTestsuitRunner ``agus ní thacaítear leis an socrú forghníomhaithe tástálacha neamhspleách GeodJango a chuir sé i bhfeidhm níos mó. Chun na tástálacha GeodJango a reáchtáil ní gá ach an `DiscoverRunner` nua a úsáid agus an aip django.contrib.gis` a shonrú.

Múnlaí úsáideora saincheaptha i dtáLink to this heading

D'athraigh tabhairt isteach an rádálaí tástála nua beagán ar an mbealach a allmhairítear samhlacha tástála. Mar thoradh air sin, ní mór d'aon tástáil a sháraíonn AUTH_USER_MODEL chun iompar a thástáil le ceann de mhúnlaí úsáideora tástála Django (Django.contrib.auth.tests.contrib.extensionUser`) an tsamhail Úsáideora a allmhairiú go sainráite i do mhodúl tástála anois:

Code
from django.contrib.auth.tests.custom_user import CustomUser


@override_settings(AUTH_USER_MODEL="auth.CustomUser")
class CustomUserFeatureTests(TestCase):
    def test_something(self):
        # Test code here
        ...

Cuireann an t-allmhairiú seo iallach ar an tsamhail úsáideora saincheaptha a Gan an t-allmhairiú seo, ní bheidh an tástáil in ann malartú sa tsamhail úsáideora saincheaptha, agus gheobhaidh tú tuairisciú earráide:

Pytb
ImproperlyConfigured: AUTH_USER_MODEL refers to model 'auth.CustomUser' that
has not been installed

Cuardaigh ``, `mhí, agus laeth_seachtaine atá ar an eolas ar chrios amaLink to this heading

Tugann Django 1.6 tacaíocht crios ama isteach le haghaidh: lookup: day, :lookup: month, agus:lookup: week_day cuardaigh nuai:setting: USE_TZ True. Rinneadh na cuardaigh seo roimhe seo i UTC beag beann ar an crios ama reatha.

<database-time-zone-definitions>Éilíonn sé seo: ref: sainmhínithe crios ama sa bhunachar sonraí `. Má tá SQLite á úsáid agat, ní mór duit pytz_ a shuiteáil. Má tá MySQL á úsáid agat, ní mór duit pytz_ a shuiteáil agus na táblaí crios ama a luchtú le `mysql_tzinfo_to_sql.

Cuir leis ``QuerySet.DateTimes () ``Link to this heading

Nuair a bhí an: doc: `tacaíocht crios ama' a cuireadh i Django 1.4 gníomhach, :meth: `QuerySet.dates () `</topics/i18n/timezones> d'fhill cuardaigh torthaí gan choinne, toisc gur rinneadh an comhiomlánú i <django.db.models.query.QuerySet.dates>UTC. <django.db.models.query.QuerySet.datetimes>Chun é seo a shocrú, tugann Django 1.6 API nua isteach,: meth: `QuerySet.DateTimes () `. Éilíonn sé seo cúpla athrú i do chód.

Tugann QuerySet.dates () ``rudaí ``dátaLink to this heading

QuerySet.dates() now returns a list of date. It used to return a list of datetime.

<django.db.models.query.QuerySet.datetimes>:meth: QuerySet.dateTimes () `filleann liosta de:class: `~datetime.datetime.

QuerySet.dates () ``nach bhfuil inúsáidte a thuilleadh ar ``DateTimeFieldLink to this heading

QuerySet.dates() raises an error if it's used on DateTimeField when time zone support is active. Use QuerySet.datetimes() instead.

Éilíonn date_hierarchy sainmhínithe crios amaLink to this heading

<django.db.models.query.QuerySet.datetimes>Braitheann gné: Attr: ~django.contrib.admin.modeladmin.date_hierarchy den riarachán anois ar:meth: QuerySet.DateTimes () `nuair a úsáidtear é ar a:class: `~Django.db.Models.DateTimeField.

Éilíonn sé seo sainmhínithe crios ama sa bhunachar sonraí nuai:setting: USE_TZ True. <database-time-zone-definitions>:ref: `Foghlaim níos mó `.

date_list i dtuairimí cineálacha teastaíonn sainmhínithe crios amaLink to this heading

Ar an gcúis chéanna, teastaíonn sainmhínithe crios ama sa bhunachar sonraí chun rochtain a fháil ar date_list` i gcomhthéacs radharc cineálach dáta-bhunaithe nuair a bhíonn an radharc bunaithe ar a:class: ~Django.db.Models.DateTimeField agus:setting: USE_TZ True`. <database-time-zone-definitions>:ref: `Foghlaim níos mó `.

D'fhéadfadh cuardaigh nua teacht ar réimsí samhailLink to this heading

Tugann Django 1.6 isteach cuardach `huair ``, `nóiméad, agus soicind ``ar:class: `~django.db.Models.DateTimeField`. bhí réimsí samhail agat ar a dtugtar ``huair ``, `nóiméad, nó soicind, beidh na cuardaigh nua ag teacht le hainmneacha réimse leat. Cuir cuardach explit:lookup: exact i gceist más saincheist é seo.

Ní réamhshocraíonn Booleanfield go False a thuilleadhLink to this heading

Nuair nach bhfuil explicit:attr: ~django.db.models.booleanfield ag a:class: ~django.db.models.field.default, is é ``None ``an luach réamhshocraithe intuigthe. Sa leagan roimhe seo de Django, “False” a bhí ann, ach níor léirigh sé sin go cruinn an easpa luach.

Féadfaidh cód atá ag brath ar an luach réamhshocraithe ná False eisceacht a ardú agus cásanna samhail nua á shábháil ar an mbunachar sonraí, toisc nach luach inghlactha é None do a:class: ~Django.db.Models.BooleanField. Ba chóir duit Default=False a shonrú sa sainmhíniú réimse, nó a chinntiú go bhfuil an réimse socraithe go TrueFalse sula sábhálfar an réad.

Aistriúcháin agus tuairimí i dLink to this heading

Aistriúcháin a eastóscadh tar éisLink to this heading

Aithníonn eastóscadh litríochtaí inaistrithe ó theimpléid leis an ordú:djadmin: makemessages tógáil i18n i gceart anois nuair a bhíonn siad suite i ndiaidh trácht cineál {#/#}` ar an líne chéanna. M.sh.:

Django template
{# A comment #}{% trans "This literal was incorrectly ignored. Not anymore" %}

Suíomh tuairimí aistritheoraLink to this heading

Comments for translators in templates specified using {# / #} need to be at the end of a line. If they are not, the comments are ignored and makemessages will generate a warning. For example:

Django template
{# Translators: This is ignored #}{% trans "Translate me" %}
{{ title }}{# Translators: Extracted and associated with 'Welcome' below #}
<h1>{% trans "Welcome" %}</h1>

Ag lua i ``reverse () ``Link to this heading

Agus URLanna á aisiompú, níor chuir Django django.utils.http.urlquote i bhfeidhm ar argóintí sula ndéantar iad a ionghabháil i bpatrúin URL. Tá an fabht seo socraithe i Django 1.6. Má d'oibrigh tú timpeall ar an fabht seo trí luachan URL a chur i bhfeidhm sula ndéantar argóintí a chur chuig ``reverse () ``, d'fhéadfadh luachan dúbailte a bheith mar thoradh air seo. Má tharlaíonn sé seo, ní gá ach an URL atá ag luachan as do chód a bhaint. Beidh ort freisin carachtair speisialta in URLanna a úsáidtear in:func: ~django.test.simpletestCase.assertDirects a gcuid leaganacha ionchódaithe a chur in ionad.

Seoltaí IP a stóráil san aip tráchtannaLink to this heading

Úsáideann an aip tráchtanna anois ``GenericipAddressfield` chun seoltaí IP tráchtaireoirí a stóráil, chun tacú le tráchtanna a chuirtear isteach ó sheoltaí IPv6. Go dtí seo, stóráil sé iad i ``iPaddressfield`, nach bhfuil i gceist ach tacú le IPv4. Agus trácht a dhéantar ó sheoladh IPv6 á shábháil, déanfaí an seoladh a ghearradh go ciúin ar bhunachair sonraí MySQL, agus ardófaí eisceacht ar Oracle. Beidh ort an cineál colúin a athrú i do bhunachar sonraí chun leas a bhaint as an athrú seo.

Maidir le MySQL, déan an cheist seo ar bhunachar sonraí do thionscadail:

SQL
ALTER TABLE django_comments MODIFY ip_address VARCHAR(39);

Maidir le Oracle, déan an cheist seo:

SQL
ALTER TABLE DJANGO_COMMENTS MODIFY (ip_address VARCHAR2(39));

Mura gcuireann tú an t-athrú seo i bhfeidhm, níl an t-iompar gan athrú: ar MySQL, gearrtar seoltaí IPv6 go ciúin; ar Oracle, gintear eisceacht. Níl aon athrú bunachar sonraí ag teastáil le haghaidh bunachair sonraí SQLite nó PostgreSQL.

Céatadán litríochta i gceisteanna cursor.executeLink to this heading

Nuair a bhíonn ceisteanna SQL amha á <executing-custom-sql>reáchtáil agat tríd an modh:ref: cursor.execut, tá an riail maidir le litríochtaí faoin gcéad (%`) a dhúbailt taobh istigh den cheist aontaithe. Bhí iompar roimhe seo ag brath ar chúlcheann an bhunachar sonraí. Anois, thar gach cúltaca, ní gá duit ach carachtair faoin gcéad liteartha a dhúbailt má tá paraiméadair athsholáthair á sholáthar agat freisin. Mar shampla:

Code
# No parameters, no percent doubling
cursor.execute("SELECT foo FROM bar WHERE baz = '30%'")

# Parameters passed, non-placeholders have to be doubled
cursor.execute("SELECT foo FROM bar WHERE baz = '30%%' and id = %s", [self.id])

Ní mór d'úsáideoirí SQLite` ceisteanna den sórt sin a sheiceáil agus a nuashonrú.

Téacs cabhrach de réimsí foirme samhail do réimsí ManyTomanyFieldLink to this heading

HTML rendering of model form fields corresponding to ManyToManyField model fields used to get the hardcoded sentence:

Hold down "Control", or "Command" on a Mac, to select more than one.

(nó a aistriúchán go dtí an áit ghníomhach) a fhorchuir mar an finscéal cabhrach a thaispeántar leo mura shon <django.db.models.Field.help_text><django.forms.Field.help_text>raigh an t-úsáideoir tréithe: attr: model `nor:attr: `form help_text` (nó cuireadh an sreang seo i gceangal le haon help_text` a sholáthraíodh).

Ó tharla sé seo ag an gciseal samhail, ní raibh aon bhealach ann chun an téacs a chosc ó bheith le feiceáil i gcásanna nach raibh sé infheidhme mar réimsí foirme a chuireann idirghníomhaíochtaí úsáideora i bhfeidhm nach mbaineann méarchlár agus/nó luch.

Ag tosú le Django 1.6, mar fhoráil sealadach comhoiriúnachta siar ad-hoc, aistríodh an loighic chun an abairt “Coinnigh síos...” a chur chuig ciseal réimse foirme samhail agus modhnaíodh chun an téacs a chur leis ach amháin nuair is é an giuirléid gaolmhar: class: ~django.forms.selectMultiple nó fo-aicmí roghnaithe.

The change can affect you in a backward incompatible way if you employ custom model form fields and/or widgets for ManyToManyField model fields whose UIs do rely on the automatic provision of the mentioned hardcoded sentence. These form field implementations need to adapt to the new scenario by providing their own handling of the help_text attribute.

Ní bhíonn tionchar ag iarratais a úsáideann áiseanna Django:doc: foirm samhail </topics/forms/modelforms> mar aon le foirm ionsuite Django: doc: fields agus:doc: widgets ach ní mór a bheith ar an eolas faoin méid atá cur síos in:ref: m2m-help_text-deprecation </ref/forms/fields> </ref/forms/widgets> thíos.

Athrú QuerySetLink to this heading

Athraíodh an t-athrú ``QuerySet` chun gach sraitheanna a fuarthas a thiontú go rudaí ``Samhail ``. I Django 1.5 agus níos luaithe tiontaíodh na sraitheanna a fuarthas go rudaí ``Samhail ``i gcodanna de 100.

Oibreoidh an cód atá ann cheana, ach d'fhéadfadh méid na sraitheanna a thiontú go rudaí athrú i gcásanna úsáide áirithe I measc na n-úsáidí den sórt sin tá lúbadh go páirteach thar shraith fiosrúcháin nó aon úsáid a chríochnaíonn ag déanamh __bool____contains__.

Go háirithe thóg an chuid is mó de chúltaca bunachar sonraí na sraitheanna go léir in aon ghuair cheana féin i 1.5.

It is still possible to convert the fetched rows to Model objects lazily by using the iterator() method.

<django.forms.BoundField.label_tag>:meth: BoundField.label_tag `tá an fhoirm anois: attr: `~django.forms.form.label_suffixLink to this heading

<django.forms.Form.as_ul>Tá sé seo comhsheasmhach leis an gcaoi a ndéanann modhanna cosúil:meth: Form.as_P <django.forms.Form.as_p>`agus:meth: `Form.as_ul lipéid a dhéanann.

Má rindeann tú label_tag de láimh i do theimpléid:

Django template
{{ form.my_field.label_tag }}: {{ form.my_field }}

beidh tú ag iarraidh an colon a bhaint (nó cibé deighilteoir eile a d'fhéadfá a bheith á úsáid) chun é a dhúbailt a sheachaint agus tú ag uasghrádú go Django 1.6. <label>Déanfaidh an teimpléad seo a leanas i Django 1.6 go comhionann leis an teimpléad thuas i Django 1.5, ach amháin go mbeidh an colon le feiceáil taobh istigh den eilimint ```.

Django template
{{ form.my_field.label_tag }} {{ form.my_field }}

déanfaidh sé rud éigin cosúil le:

Html
<label for="id_my_field">My Field:</label> <input id="id_my_field" type="text" name="my_field" />

Más mian leat an t-iompar reatha a bhaineann le rindreáil label_tag a choinneáil gan an label_suffix, cuir an fhoirm label_suffix=". Is féidir leat an label_suffix` a shaincheapadh freisin ar bhonn in aghaidh an réimse ag baint úsáide as an paraiméadar nua label_suffix ar:meth: ~django.forms.boundfield.label_tag.

Tuairimí riaracháin _changelist_filters paraiméadar GETLink to this heading

Chun scagairí amharc liosta a chaomhnú agus a athchóiriú a bhaint amach, téann tuairimí riaracháin timpeall an pharaiméadair GET _changelist_filters anois. Tá sé tábhachtach go gcuirfidh tú cuntas ar an athrú sin má tá teimpléid riaracháin saincheaptha agat nó má tá do thástálacha ag brath ar na URLanna roimhe seo. Más mian leat filleadh ar an iompar bunaidh is féidir leat an tréith: attr: ~django.contrib.admin.modeladmin.preserve_filters a shocrú go False.

Úsáideann athshocrú pasfhocal django.contrib.auth ionchódú bonn 64 de ``Úsáideoir ``PKLink to this heading

D'úsáid leaganacha roimhe seo de Django ionchódú bonn 36 den phríomh-eochair Úsáideoir ``sna tuairimí athshocraithe pasfhocal agus URLanna (``django.contrib.auth.views.password_reset_confirm ()). Is leor ionchódú Bonn 36 más sláimhir é príomh-eochair an úsáideora, áfach, le samhlacha úsáideora saincheaptha a thabhairt isteach i Django 1.5, b'fhéidir nach mbeidh an toimhde sin fíor a thuilleadh.

Athraíodh django.contrib.auth.views.password_reset_confirm () ``chun paraiméadar ``uidb64 a ghlacadh in ionad uidb36. Má tá an dearcadh seo á aisiompú agat, mar shampla i dteimpléad saincheaptha ``password_reset_email.html`, bí cinnte do chód a nuashonrú.

Cuireadh shim sealadach do django.contrib.auth.views.password_reset_verify () ``a ligfidh naisc athshocraithe pasfhocal a ghintear roimh Django 1.6 leanúint ag obair chun comhoiriúnacht ar ais a sholáthar; bainfear é seo i Django 1.7. Dá bhrí sin, chomh fada agus a bheidh do shuíomh ag rith Django 1.6 ar feadh níos mó ná ``PASSWORD_RESET_TIMEOUT_DAYS `, ní bheidh aon éifeacht ag an athrú seo. Mura bhfuil (mar shampla, má dhéanann tú uasghrádú díreach ó Django 1.5 go Django 1.7), ansin ní oibreoidh aon naisc athshocraithe pasfhocal a ghintear sula ndéanann tú uasghrádú go Django 1.7 nó níos déanaí tar éis an uasghrádaithe.

Ina theannta sin, má tá aon URLanna athshocraithe pasfhocal saincheaptha agat, beidh ort iad a nuashonrú trí uidb36` a chur in ionad ``uidb64 agus an doic a leanann an patrún sin le slash. Cuir _\ - freisin leis an liosta carachtair a d'fhéadfadh a mheaitseáil leis an bpatrún uidb64.

Mar shampla:

Code
url(
    r"^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$",
    "django.contrib.auth.views.password_reset_confirm",
    name="password_reset_confirm",
),

éiríonn sé:

Code
url(
    r"^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$",
    "django.contrib.auth.views.password_reset_confirm",
    name="password_reset_confirm",
),

B'fhéidir gur mhaith leat an shim a chur leis freisin chun tacú leis na naisc athshocraithe sean-stíl. Ag baint úsáide as an sampla thuas, mhodhnófá an url atá ann cheana trí django.contrib.auth.auth.views.password_reset_confirm` a chur in ionad django.contrib.auth.views.password_reset_confirm_uidb36` agus bain an argóint ``ainm `ionas nach mbeidh sé ag teacht ar an url nua:

Code
url(
    r"^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$",
    "django.contrib.auth.views.password_reset_confirm_uidb36",
),

Is féidir leat an patrún URL seo a bhaint tar éis d'aip a imscaradh le Django 1.6 le haghaidh ``PASSWORD_RESET_TIMEOUT_DAYS ``.

Athraigh sraith seisiúin réamhshocraithe go JSONLink to this heading

Go stairiúil, d'úsáid :mod: django.contrib.sessions: mod: pickle chun sonraí seisiúin a shraitheadh sula ndéantar iad a stóráil sa chúltaca. Má tá cúltaca seisi <cookie-session-backend>úin fianán sínithe á úsáid agat: agus:setting: SECRET_KEY is aithne ag ionsaitheoir (níl leochaileacht bhunúsach i Django a chuirfeadh sé sceitheadh), d'fhéadfadh an t-ionsaitheoir teaghrán a chur isteach ina seisiún a fhorghníomhaíonn cód treallach ar an bhfreastalaí. Tá an teicníc chun é sin a dhéanamh simplí agus ar fáil go héasca ar an idirlíon. Cé go síníonn stóráil seisiún fianán na sonraí atá stóráilte ag fianán chun cur isteach a chosc, méadaíonn sceitheadh a: setting: SECRET_KEY láithreach go leochaileacht iargúlta forghníomhaithe cód.

Is féidir an t-ionsaí seo a mhaolú trí shraitheadh sonraí seisiúin ag baint úsáide as JSON seachas: mod: pickle. Chun é seo a éascú, thug Django 1.5.3 suíomh nua isteach, :setting: SESSION_SERIALIZER, chun an fhormáid sraitheach seisiúin a shaincheapadh. Maidir le comhoiriúnacht ar ais, réamhshocraigh an socrú seo le húsáid: mod: pickle i Django 1.5.3, ach tá an réamhshocraithe athraithe againn go JSON i 1.6. Má dhéanann tú uasghrádú agus ag aistriú ó phiocán go JSON, caillfear seisiúin a cruthaíodh roimh an uasghrádú Cé nach dtacaíonn sraith JSON le gach réad Python cosúil:mod: pickle a dhéanann, molaimid go mór seisiúin JSON sraitheach a úsáid. Bí ar an eolas faoi na rudaí seo a leanas agus tú ag seiceáil do chód chun a fháil amach an n-oibreoidh sraith JSON do d'iarratas:

  • Teastaíonn eochracha teaghrán ó JSON, mar sin is dócha go mbeidh fadhbanna ort má tá eochracha neamh-sreang á úsáid agat i request.session `.

  • Ní oibreoidh éag seisiúin trí luachanna datetime a rith chuig: ~django.contrib.sessions.backends.base.sessionbase.set_expiry toisc nach bhfuil luachanna datetime sraitheach i JSON. Is féidir leat luachanna sláimhir a úsáid ina ionad sin.

Féach an doiciméadach:ref: session_serialization le haghaidh tuilleadh sonraí.

Athraíonn Mapper Coibhneasta CuspóirLink to this heading

Tá go leor athruithe ar an ORM i Django 1.6. Tagann na hathruithe seo den chuid is mó i dtrí chatagóir:

  1. Socruithe fabhtanna (m.sh. clásail ceangail cearta le haghaidh caidreamh cineálach, ceisteanna a chomhcheangal, páirt a chur chun cinn, agus ceartú

  2. Ullmhú le haghaidh gnéithe nua. Mar shampla tá an ORM réidh go hinmheánach anois le haghaidh eochracha eachtracha ilcholumn.

  3. Glanadh ginearálta.

D'fhéadfadh roinnt fadhbanna comhoiriúnachta a bheith mar thoradh ar Mar shampla, ginfidh roinnt ceisteanna ainmneacha tábla éagsúla anois. <django.db.models.query.QuerySet.extra>Is féidir leis seo dul i bhfeidhm ar: meth: QuerySet.extra () `. Ina theannta sin, tabharfaidh roinnt ceisteanna torthaí difriúla anois. <django.db.models.Q>Is sampla: meth: `eisiamh (coinníoll) <django.db.models.query.QuerySet.exclude>`nuair is ceann casta é an coinníoll (tagairt ilchomhtháirteacha taobh istigh: aicme: `rudaí Q). I go leor cásanna níor thug na ceisteanna a raibh tionchar orthu torthaí cearta i Django 1.5 ach déanann siad anois. Ar an drochuair tá cásanna ann freisin a tháirgeann torthaí éagsúla, ach ní tháirgeann Django 1.5 ná 1.6 torthaí cearta.

Faoi dheireadh, rinneadh go leor athruithe ar na APIs inmheánacha ORM.

IlghnéitheachLink to this heading

  • Ní féidir an Django.db.Models.Query.EmptyQuerySet` a thabhairt níos mó - níl sé inúsáidte ach mar aicme marcóra chun seiceáil má:meth: ~django.db.models.query.queryset.none tugtar: ``isinstance (qs.none (), emptyQuerySet) ``

  • Má úsáidtear do chód CSS/JavaScript chun giuirléidí ionchuir HTML a rochtain de réir cineál, ba cheart duit é a athbhreithniú mar d'fhéadfadh giuirléidí type='text' a aschur anois mar type='email', type='url'` nó ``type='number'` ag brath ar a gcineál réimse comhfhreagrach.

  • Foirm field's:attr: ~django.forms.field.error_messages ina bhfuil sealbhóir áite ba cheart anois sealbhóir áit ainmnithe a úsáid i gcónaí ("Luach '% (value) s' ró-mhór"` in ionad ``"Luach '%s' ró-mór"). Féach an doiciméadú réimse comhfhreagrach le haghaidh sonraí faoi ainmneacha na sealbhóirí áite. Bíonn tionchar go háirithe ag na hathruithe i 1.6 ar: aicme: `~django.forms.decimalfield agus:class: ~django.forms.ModelMultipleChoiceField.

  • Some:attr: ~django.forms.field.error_messages le haghaidh: aicme: ~django.forms.integerfield, :class: ~django.forms.emailfield, iPadressfield, :class: ~django.forms.genericipAddressField, agus:class: Django.Forms.~GineRicipAddressField Cuireadh Jango.Forms.SlugField` faoi chois toisc gur dhúbailte siad teachtaireachtaí earráide a sholáthraíodh cheana féin ag bailíochtóirí ceangailte leis na réimsí.

  • Due to a change in the form validation workflow, TypedChoiceField coerce method should always return a value present in the choices field attribute. That limitation should be lifted again in Django 1.7.

  • Rinneadh athruithe ar an mbealach a láimhseáiltear amach ama i gcúltaca taisce. Ní féidir an t-am réamhshocraithe a úsáid a thuilleadh mar thoradh ar timeout=None ag dul isteach go sainráite. Socróidh sé anois ama neamh-éag. Ní úsáideann tú 0 isteach sa chúltaca memcache an t-am réamhshocraithe a thuilleadh, agus anois socraíonn sé agus rachaidh sé in éag an luach láithreach.

  • Úsáidtear an aip django.contrib.flatpages chun ceanntásca saincheaptha HTTP a shocrú chun críocha dífhabhtaithe. Níor doiciméadaíodh an fheidhmiúlacht seo agus rinneadh an caistriú neamhéifeachtach mar sin baineadh í, mar aon lena chur i bhfeidhm cineálach, ar fáil roimhe seo in django.core.xheaders.

  • Tá an xViewMiddleware` aistrithe ó django.middleware.doc go django.contrib.admindocs.middleware toisc gur mionsonraí cur chun feidhme de admindocs é, cruthaithe nach bhfuil sé in-athúsáidte i gcoitinne.

  • GenericIPAddressField will now only allow blank values if null values are also allowed. Creating a GenericIPAddressField where blank is allowed but null is not will trigger a model validation error because blank values are always stored as null. Previously, storing a blank value in a field which did not allow null would cause a database exception at runtime.

  • Má ardaítear eisceacht NoReverseMatch ó mhodh agus teimpléad á rindreáil, ní dhéantar é a thostú. Mar shampla, beidh {{obj.view_href}} mar thoradh ar rindreáil teimpléid má ardaíonn view_href () ```noReverseMatch. Níl aon athrú ar an gclibe:ttag: {% url%}<url>, is cúis leis go dteipeann ar rindreáil teimpléid mar i gcónaí nuair a ardaítear noReverseMatch.

  • django.test.Client.logout() now calls django.contrib.auth.logout() which will send the user_logged_out() signal.

  • Authentication views are now reversed by name, not their locations in django.contrib.auth.views. If you are using the views without a name, you should update your urlpatterns to use django.conf.urls.url() with the name parameter. For example:

    Code
    (r"^reset/done/$", "django.contrib.auth.views.password_reset_complete")
    

    éiríonn sé:

    Code
    url(
        r"^reset/done/$",
        "django.contrib.auth.views.password_reset_complete",
        name="password_reset_complete",
    )
    
  • RedirectView now has a pattern_name attribute which allows it to choose the target by reversing the URL.

  • In Django 1.4 and 1.5, a blank string was unintentionally not considered to be a valid password. This meant set_password() would save a blank password as an unusable password like set_unusable_password() does, and thus check_password() always returned False for blank passwords. This has been corrected in this release: blank passwords are now valid.

  • Ghlac an admin changelist_view le paraiméadar GET pop chun a chur in iúl go raibh sé le taispeáint i bpíosa aníos. Athainmníodh an paraiméadar seo go `` _ aníos aníos`` chun a bheith comhsheasmhach leis an gcuid eile de na hamharcanna riaracháin. Ba cheart duit do theimpléid saincheaptha a nuashonrú má úsáideann siad an t-ainm paraiméadar roimhe seo.

  • validate_email() now accepts email addresses with localhost as the domain.

  • Cuireann an rogha nua:option: makemessages --keep-pot cosc ar an gcomhad sealadach .pot a ghintear a scriosadh sula gcruthaítear an comhad .po.

  • Baineadh an django.core.servers.basehttp.wsgiserverexception gan doiciméadú. Úsáid socket.error a sholáthraíonn an leabharlann caighdeánach ina ionad. Scaoileadh an t-athrú seo freisin i Django 1.5.5.

  • Tá síniú de:meth: Django.Views.Generic.Base.RedirectView.get_Redirect_URL athraithe agus glacann sé anois le hargóintí seasmhacha freisin (*args, **kwargs ``). Cuirfear aon ghrúpa gabháilte gan ainm ar aghaidh chuig ``get_redirect_url () ``agus d'fhéadfadh ``typeError a bheith mar thoradh air mura ndéanann tú síniú do mhodha saincheaptha a nuashonrú.

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

APIs bainistíochta idirbheartLink to this heading

Rinneadh athchóiriú go hiomlán ar bhainistíocht idirbheart i Django 1.6, agus tá na APIs reatha dlús:

  • Django.middleware.Transaction.TransactionMiddleWare

  • django.db.transaction.autochommit

  • django.db.transaction.comit_on_rath

  • django.db.transaction.comm_lámh

  • an socrú TRANSACTIONS_MANAGED

django.contrib.tuairimLink to this heading

Tá creat tráchta Django díluaite agus ní thacaítear leis a thuilleadh. Beidh sé ar fáil i Django 1.6 agus 1.7, agus bainfear é i Django 1.8. Freastalfar níos fearr ar fhormhór na n-úsáideoirí le réiteach saincheaptha, nó táirge óstáilte mar Disqus.

Tá an cód ar a dtugtar django.contrib.comments roimhe seo fós ar fáil i stóras seachtrach.

Tacaíocht do leaganacha PostgreSQL níos sine ná 8.4Link to this heading

Sroichtear deireadh na dtréimhsí tacaíochta suas srutha i mí na Nollag 2011 do PostgreSQL 8.2 agus i mí Feabhra 2013 do 8.3. Mar thoradh air sin, socraíonn Django 1.6 8.4 mar an leagan íosta PostgreSQL a thacaíonn sé go hoifigiúil.

Spreagtar go láidir duit an leagan is déanaí de PostgreSQL atá ar fáil a úsáid, mar gheall ar fheabhsuithe feidhmíochta agus chun leas a bhaint as an macasamhail sruthú dúchasach atá ar fáil i PostgreSQL 9.x.

Athruithe ar:ttag: timthriall agus:ttag: firstofLink to this heading

De ghnáth éalaíonn an córas teimpléid gach athróg chun ionsaithe XSS a sheachaint. Mar gheall ar thimpiste staire, áfach, tugann na clibeanna:ttag: cicle agus:ttag: firstof a gcuid argóintí mar atá.

Tosaíonn Django 1.6 próiseas chun an neamhréireacht seo a cheartú. Soláthraíonn leabharlann teimpléad todhcha cur i bhfeidhm malartacha de:ttag: cicle agus:ttag: firstof a n-ionchuir a n-ionchuir a n-uathoibríoch. Má tá na clibeanna seo á úsáid agat, moltar duit an líne seo a leanas a áireamh ag barr do theimpléid chun an t-iompar nua a chumasú:

Django template
{% load cycle from future %}

nó:

Django template
{% load firstof from future %}

Tá na clibeanna a chuireann an sean-iompar i bhfeidhm imithe i léig, agus i Django 1.8, cuirfear an t-iompar nua in ionad an tseaniompar. Chun comhoiriúnacht le leaganacha amach anseo de Django a chinntiú, ba cheart teimpléid atá ann cheana a mhodhnú chun na leaganacha future a úsáid.

<autoescape>Más gá, is féidir leat éalú uathoibríoch a dhíchumasú go sealadach le:func: ~django.utils.safestring.mark_safe nó:ttag: {% autoescape off%}.

CACHE_MIDDLEWARE_ANONYMOUS_ONLY socrúLink to this heading

Úsáidtear Cachemiddleware agus UpdateCacheMiddleware chun bealach a sholáthar chun iarratais a thaisceadh ach amháin mura ndearna úsáideoir logáilte isteach iad. Bhí an meicníocht seo neamhéifeachtach den chuid is mó toisc go gcuireann an meán-earraí ceannteideal HTTP ``Vary: Cookie` san áireamh i gceart, agus tá an ceannteideal seo á leagan síos ar ócáidí éagsúla, mar shampla:

  • rochtain a fháil ar an seisiún, nó

  • ag baint úsáide as cosaint CSRF, atá casaithe air de réir réamhshocraithe, nó

  • ag baint úsáide as leabharlann taobh an chliaint a shocraíonn fianáin, cosúil le Google Analytics.

Fágann sé seo go n-oibríonn an taisce go héifeachtach ar bhonn in aghaidh na seisiúin beag beann ar an socrú ``CACHE_MIDDLEWARE_ANONYMOUS_ONLY`.

Modh _has_changed ar ghuirléidíLink to this heading

Má shainigh tú do ghuirléidí foirme féin agus má shainigh tú an modh _has_changed ar ghuirléid, ba cheart duit an modh seo a shainiú anois ar an réimse foirme féin.

module_name tréith samhail _metaLink to this heading

Samhail. Ainmníodh _meta.module_name go model_name. In ainneoin gur API príobháideach é, rachaidh sé trí chosán diúltaithe rialta.

Modhanna múnla _meta get_ (cuir |athraithe|scriosadh) _ceadúnaLink to this heading

Samhail. Cuireadh modhanna _meta.get_ (add |athraithe|scriosadh) ar mhodhanna _ceadúnaí. Fiú mura raibh siad mar chuid den API poiblí rachaidh siad trí chosán diúltaithe rialta freisin. Is féidir leat ``django.contrib.auth.get_permission_codename ('action', Samhail) a chur in ionad iad. _meta) ``áit a bhfuil ``'gníomh'` `'add', ```athraithe, nó ``'scriose'.

Athainmníodh get_query_set agus modhanna comhchosúla go get_querysetLink to this heading

Athainmníodh modhanna a thugann QuerySet` ar nós Manager.get_query_set` nó ModelAdmin.querySet go get_queryset`.

Má tá tú ag scríobh leabharlann a chuireann modh Manager.get_query_set` i bhfeidhm, mar shampla, agus ní mór duit tacú le seanleaganacha Django, ba cheart duit an modh a athainmniú agus alias a chur leis an sean-ainm go coinníollach:

Code
class CustomManager(models.Manager):
    def get_queryset(self):
        pass  # ...

    if django.VERSION < (1, 6):
        get_query_set = get_queryset

    # For Django >= 1.6, models.Manager provides a get_query_set fallback
    # that emits a warning when used.

Má tá leabharlann á scríobh agat a chaithfidh glaoch ar an modh get_queryset agus nach gcaithfidh tú tacú le seanleaganacha Django, ba chóir duit scríobh:

Code
get_queryset = (
    some_manager.get_query_set
    if hasattr(some_manager, "get_query_set")
    else some_manager.get_queryset
)
return get_queryset()  # etc

I gcás ginearálta bainisteoir saincheaptha a chur i bhfeidhm a mhodh get_queryset féin agus a ghlaonn an modh sin, agus a chaithfidh oibriú le leaganacha níos sine Django, agus leabharlanna nár nuashonraíodh fós, tá sé úsáideach modh get_queryset_compat a shainiú mar thíos agus é a úsáid go hinmheánach do do bhainisteoir:

Code
class YourCustomManager(models.Manager):
    def get_queryset(self):
        return YourCustomQuerySet()  # for example

    if django.VERSION < (1, 6):
        get_query_set = get_queryset

    def active(self):  # for example
        return self.get_queryset_compat().filter(active=True)

    def get_queryset_compat(self):
        get_queryset = (
            self.get_query_set if hasattr(self, "get_query_set") else self.get_queryset
        )
        return get_queryset()

Cuidíonn sé seo leis na hathruithe atá ag teastáil a íoslaghdú, ach oibríonn sé i gceart freisin i gcás fo-aicmí (mar shampla RelatedManagers ó Django 1.5) a d'fhéadfadh get_query_setget_queryset a shárú.

Amharc gearrchearr agus URLConfLink to this heading

Bogadh an radharc shortcut ó django.views.defaults` go django.contrib.contenttypes.views go gairid tar éis an scaoileadh 1.0, ach níor dhíothas an sean-áit riamh. Ceartaíodh an maoirseacht seo i Django 1.6 agus ba cheart duit an suíomh nua a úsáid anois.

Rinneadh an URLConf django.conf.urls.shortcut a dhíchur freisin. Má tá tú ag áireamh é i URLConf, ní gá ach: a chur in ionad:

Code
(r"^prefix/", include("django.conf.urls.shortcut")),

le:

Code
(
    r"^prefix/(?P<content_type_id>\d+)/(?P<object_id>.*)/$",
    "django.contrib.contenttypes.views.shortcut",
),

Samhlfhoirme gan réimsí ``nó ``eisiam`Link to this heading

Roimhe seo, dá dteastaíonn uait a:class: ~Django.Forms.ModelForm chun gach réimse ar an tsamhail a úsáid, d'fhéadfá an tréith Meta.Fields a fhágáil, agus úsáidfí gach réimse.

D'fhéadfadh fadhbanna slándála a bheith mar thoradh air seo ina gcuirtear réimsí leis an tsamhail agus, gan aon ghnó, a éiríonn siad in-eagarthóireachta go huathoibríoch I roinnt cásanna, go háirithe le réimsí boolean, is féidir go mbeadh an fhadhb seo dofheicthe go hiomlán. < https://en.wikipedia.org/wiki/Mass_assignment_vulnerability>Is foirm é seo de `Leochaileacht sannadh ollmhóraí`_.

Ar an gcúis seo, déantar an t-iompar seo a dhíchur, agus déantar an rogha Meta.exclude a úsáid go láidir. Ina áit sin, ba chóir gach réimse atá beartaithe lena áireamh san fhoirm a liostáil go sainráite sa tréith réimsí `fields.

Mura bhfuil feidhm ag an imní slándála seo i ndáiríre i do chás, tá aicearra ann chun a léiriú go sainráite gur chóir gach réimse a úsáid - bain úsáid as an luach speisialta "__all__" don tréith réimsí:

Code
class MyModelForm(ModelForm):
    class Meta:
        fields = "__all__"
        model = MyModel

Má tá ModelForms ``saincheaptha agat nach ach a úsáid sa riarachán, rogha eile ann. a mhodhanna féin ag an riarachán chun réimsí a shainiú (`fieldsets srl.), agus mar sin tá sé iomarcach liosta réimsí a chur leis an Modelform`. Ina áit sin, fág ach an aicme istigh Meta den ModelForm ``a fhágáil, nó an tréith ``Meta.Model` a fhágáil. Ós rud é go bhfuil a fhios ag an bhfo-aicme ModelAdmin cén tsamhail dó a bhfuil sé, féadfaidh sé na tréithe riachtanacha a chur leis chun `ModelForm ``feidhmiúil a bhaint amach. Oibríonn an t-iompar seo freisin le haghaidh leaganacha Django níos luaithe.

UpdateView agus CreateView gan réimsí follasachaLink to this heading

Tá na tuairimí cineálacha:class: ~django.views.generic.edit.createView agus:class: ~django.views.generic.edit.updateView, agus aon rud eile a dhíorthaítear ó:class: ~Django.Views.Generic.Edit.ModelFormMixin, leochaileach don fhadhb slándála a thuairiscítear sa chuid thuas, toisc gur féidir leo ``ModelFormixin` a chruthú go huathoibríoch Foirm ``a úsáideann gach réimse le haghaidh samhail.

Ar an gcúis seo, má úsáideann tú na tuairimí seo chun samhlacha a chur in eagar, ní mór duit an tréith fields` (nua i Django 1.6) a sholáthar freisin, ar liosta de réimsí samhlacha é agus a oibríonn ar an mbealach céanna leis an tréith: `~django.forms.modelform` `Meta.fields. De rogha air sin, is féidir leat an tréith form_class a shocrú le Modelform a shainmhíníonn go sainráite na réimsí atá le húsáid. Tá fo-aicme UpdateView nó CreateView` a shainmhíniú le húsáid le samhail ach gan liosta follasach réimsí a shainmhíniú.

Téacs cabhrach de réimsí foirm mhúnla a ghearradh do réimsí ``ManyTomanyField`Link to this heading

Tá gach láimhseáil speisialta ar an tréith help_text de réimsí samhail ManyTomanyField a dhéantar ag réimsí caighdeánacha samhail nó foirm mhúnla mar a thuairiscítear in:ref: m2m-help_text thuas a dhíothú agus bainfear é i Django 1.8.

Ní mór téacs cabhrach na réimsí seo a láimhseáil le feidhmchláir, réimsí foirme saincheaptha nó giuirléidí, díreach mar a tharlaíonn leis an gcuid eile de na cineálacha réimse samhail.