Nótaí scaoilte Django 1.2Link to this heading
*17 Bealtaine, 2010. *
Fáilte go dtí Django 1.2!
Beagnach bliain á dhéanamh, tá liosta mórthaibhseach á phacáistiú ag Django 1.2 de gnéithe nua agus go leor ceartúcháin ar fhabht. Clúdaíonn na nótaí scaoileadh seo na gnéithe nua, chomh maith le hathruithe tábhachtacha ar mhaith leat a bheith feasach orthu agus tú ag uasghrádú ó Django 1.1 nó leaganacha níos sine.
ForbhreathnúLink to this heading
Tugann Django 1.2 roinnt gnéithe nua móra tábhachtacha isteach, lena n-áirítear:
Tacaíocht do: ref: `naisc iolracha bunachar sonraí <support-for-multiple-databases>`i gcás amháin Django.
`Bailíochtú samhail `_ spreagtha ag bailíochtú foirm Django.
<improved-csrf-protection>Go mór: ref: `cosaint fheabhsaithe i gcoinne Fhorbhóisiú Iarratais Tras-Láithreáin `(CSRF).
Creat nua:ref: `teachtaireachtaí úsáideora <messages-framework>`le tacaíocht do theachtaireacht bhunaithe ar fhianán agus seisiún d'úsáideoirí gan ainm agus fíordheimhnithe araon.
<relaxed-requirements-for-usernames>Crúcaí le haghaidh ceadúnais ar leibhéal réad, `ceadanna d'úsáideoirí gan ainm `_, agus:ref: `riachtanais ainm úsáideora níos solúbtha `.
Saincheapadh seoladh ríomhphoist trí backends.
New:ref: `"cliste” má chlib teimpléad <new-in-1.2-smart-if>`a thacaíonn le hoibreoirí comparáide.
<whats-new-1.2>Is iad seo ach na buaicphointí; is féidir sonraí iomlána agus liosta iomlán gnéithe: ref: `a fháil thíos `.
Cibé áit is féidir, tugadh na gnéithe seo isteach ar bhealach atá comhoiriúnach le cúl faoir:doc: 'ár mbeartas cobhsaíochta AP</misc/api-stability> I'.
Mar sin féin, tá dornán gnéithe* athraithe ar bhealaí a bheidh, i gcás roinnt úsáideoirí, ag teacht ar chúl. Is iad na hathruithe móra:
Tá tacaíocht do Python 2.3 titim. Féach na nótaí iomlána thíos.
Níl an creat nua cosanta CSRF comhoiriúnach ar chúl leis an seanchóras. Ní bheidh tionchar ag úsáideoirí an tseanchórais go dtí go mbainfear an seanchóras i Django 1.4.
Mar sin féin, éilíonn uasghrádú chuig an gcreat nua cosanta CSRF roinnt athruithe tábhachtacha atá neamhchomhoiriúnach le cúil, sonraithe i `Cosaint CSRF `_, thíos.
Ba chóir go mbeadh a fhios ag údair fo-aicmí saincheap:class: ~django.db.models.field go bhfuil athrú tagtha ar roinnt modhanna ar fhréamhshamhail, sonraithe faoi get_db_prep_* () modhanna ar Field, thíos.
Tá athrú beagán tagtha ar inmheánacha clibeanna teimpléad; ba cheart d'údair clibeanna teimpléad saincheaptha a gcaithfidh stát a stóráil (m.sh. clibeanna sreafa rialaithe saincheaptha) a chinntiú go leanann a gcód na rialacha nua maidir le clibeanna teimpléad stáit
An: func: ~django.contrib.auth.decorators.user_passes_test, :func: ~django.contrib.auth.decorators.login_required, agus:func: ~django.contrib.auth.decorators.permission_requred, maisitheoirí ó:mod: django.contrib. ní bhaineann ach le feidhmeanna agus ní oibríonn siad ar mhodhanna a thuilleadh. <user-passes-test-login-required-permission-required>Tá socrú aon-líne simplí ann: ref: `sonraithe thíos `.
Arís, níl iad seo ach na gnéithe móra a rachaidh i bhfeidhm ar na húsáideoirí is mó. <deprecated-features-1.2>Spreagtar go mór úsáideoirí a uasghrádú ó leaganacha roimhe seo de Django dul i gcomhairle leis an liosta iomlán de:ref: `athruithe neamh-chomhoiriúnacha ar aghaidh 'agus an liosta de:ref: `gn <backwards-incompatible-changes-1.2>éithe scoite `.
Comhoiriúnacht PythonLink to this heading
Cé nach gné nua é, tá sé tábhachtach a thabhairt faoi deara go dtugann Django 1.2 an chéad athrú isteach inár mbeartas comhoiriúnachta Python ó thús phoiblí tosaigh Django. Rinneadh tástáil agus tacaíodh le eisiúintí Django roimhe seo ar leaganacha 2.x Python ó 2.3 suas; Tlagann Django 1.2, áfach, tacaíocht oifigiúil do Python 2.3. Dá bhrí sin, is é 2.4 an leagan íosta Python atá riachtanach do Django anois, agus déantar tástáil agus tacaítear le Django ar Python 2.4, 2.5 agus 2.6, agus tacófar leis ar an Python 2.7 nach bhfuil eisithe fós.
Níor cheart go mbíonn tionchar ag an athrú seo ach ar líon beag úsáideoirí Django, mar tá formhór na ndíoltóirí córais oibriúcháin inniu ag seoladh Python 2.4 nó níos nuaí mar a leagan réamhshoc Má tá Python 2.3 á úsáid agat fós, áfach, beidh ort cloí le Django 1.1 go dtí gur féidir leat uasghrádú a dhéanamh; per:doc: `ár mbeartas tacaíochta ', leanfaidh Django 1.1 ag fáil tac</internals/release-process> aíochta slándála go dtí scaoilfear Django 1.3.
Tá treochlár do thacaíocht foriomlán 2.x Python Django, agus aistriú go Python 3.x sa deireadh, á fhorbairt faoi láthair, agus fógrófar é sula scaoilfear Django 1.3.
Cad atá nua i Django 1.2Link to this heading
Tacaíocht do iliomad bunachar sonraíLink to this heading
Cuireann Django 1.2 an cumas úsáid: doc: níos mó ná bunachar sonraí amháin 'i do thionscadal Django. </topics/db/multi-db> Is féidir ceisteanna a eisiúint ag bunachar sonraí ar leith leis an modh ``using () ``ar rudaí ``QuerySet. Is féidir rudaí aonair a shábháil chuig bunachar sonraí ar leith trí argóint úsáid ``a sholáthar nuair a ghlaonn tú ar ``save ().
Bailíochtú samhailLink to this heading
Tá tacaíocht anois ag cásanna samhlacha le haghaidh: ref: a gcuid sonraí féin a bhailíochtú </ref/validators> <validating-objects>, agus glacann réimsí samhail agus foirm araon le liostaí inchumraithe de:doc: validators a shonraíonn iompar bailíochtaithe in-athúsáidte, ionfhabhtaithe. Tabhair faoi deara, áfach, go gcaithfear bailíochtú a dhéanamh go sainráite fós. Ní dhéanfar aon bhailíochtú sonraí an cháis ar mhodh ``save () ``samhail a ghairm.
Cosaint CSRF feabhsaitheLink to this heading
Tá cosaint i bhfad feabhsaithe ag Django anois in aghaidh: doc: `Ionsaithe Fhorbhósáide Iarratas Tras-Láithreáin (CSRF )</ref/csrf> `. Tarlaíonn an cineál ionsaithe seo nuair a bhíonn nasc, cnaipe foirme nó roinnt JavaScript i láithreán gréasáin mailíseach atá beartaithe chun gníomh éigin a dhéanamh ar do shuíomh Gréasáin, ag baint úsáide as dintiúir úsáideora logáilte isteach a thugann cuairt ar an suíomh mailíseach ina mbrabhsálaí. Clúdaítear cineál ionsaí gaolmhar, “logáil isteach CSRF,” áit a gcuireann suíomh ionsaitheach brabhsálaí úsáideora isteach i suíomh le dintiúir duine eile, clúdaithe freisin.
Creat teachtaireachtaíLink to this heading
Cuimsíonn Django anois creata “teachtaireachtaí láidir agus cumraithe: doc: le tacaíocht ionsuite do theachtaireachtaí bunaithe ar f</ref/contrib/messages> hianán agus seisiún, do chliaint gan ainm agus fíordheimhnithe araon. Cuireann an creat teachtaireachtaí in ionad an API teachtaireachta úsáideora lasmuigh agus tugann sé deis duit teachtaireachtaí a stóráil go sealadach in iarratas amháin agus iad a aisghabháil le taispeáint in iarratas ina dhiaidh sin (an chéad cheann eile de ghnáth)
Ceadanna ar leibhéal réadaLink to this heading
Tá bonn curtha leis chun ceadanna a shonrú ag an leibhéal in aghaidh an ábhair. Cé nach bhfuil sé seo á chur i bhfeidhm sa chroílár, is féidir le hinneal fíordheimhnithe saincheaptha an cur i bhfeidhm seo a sholáthar agus bainfidh django.contrib.auth.models.User úsáid as. Féach an doiciméid fíordheimhnithe le haghaidh tuilleadh eolais.
Ceadanna d'úsáideoirí gan ainmLink to this heading
If you provide a custom auth backend with supports_anonymous_user set to
True, AnonymousUser will check the backend for permissions, just like
User already did. This is useful for centralizing permission handling - apps
can always delegate the question of whether something is allowed or not to
the authorization/authentication backend. See the authentication
docs for more details.
Riachtanais suaimhneach d'ainmneachaLink to this heading
Ceadaíonn an réimse bunaithe:class: ~django.contrib.auth.models.user model's:attr: ~django.contrib.auth.models.user.name raon níos leithne carachtair, lena n-áirítear carachtair @, +`, .` agus -.
Cúltaca ríomhphoistLink to this heading
<topic-email-backends>Is féidir leat anois:ref: an bealach a sheolann Django ríomhphost a chumrú `. In ionad SMTP a úsáid chun gach ríomhphost a sheoladh, is féidir leat cúltaca ríomhphoist inchumraithe a roghnú anois chun teachtaireachtaí a sheoladh. Má úsáideann do sholáthraí óstála bosca gainimh nó teicníc éigin neamh-SMTP eile chun post a sheoladh, is féidir leat cúltaca ríomhphoist a thógáil anois a ligfidh do chaighdeán Django: doc: `modhanna seolta ríomhphost na</topics/email> háiseanna sin a úsáid.
Fágann sé seo go bhfuil sé níos éasca seoladh ríomhphoist a dhífhabhtú. <topic-email-console-backend><topic-email-memory-backend>Seolann Django le cur i bhfeidhm cúltaca a ligeann duit ríomhphost a sheoladh chuig a:ref: file <topic-email-file-backend>, chuig:ref: console, nó chuig: ref: `memory `. <topic-email-dummy-backend>Is féidir leat gach ríomhphost a chumrú go mbeadh: ref: `caitheadh amach `.
“Cliste” :ttag: clib `ifLink to this heading
Tá an chlib: ttag: `if `uasghrádaithe le bheith i bhfad níos cumhachtaí. Ar dtús, tá tacaíocht curtha againn d'oibreoirí comparáide. Ní bheidh ort clóscríobh a thuilleadh:
{% ifnotequal a b %}
...
{% endifnotequal %}
Is féidir leat é seo a dhéanamh anois:
{% if a != b %}
...
{% endif %}
Níl aon chúis ann i ndáiríre {% ifequal%} nó {% ifnotequal%} a úsáid níos mó, mura bhfuil tú an cineál nostalgic.
Is iad na hoibreoirí a dtacaítear leo ná ==, !=, `` <, ``>, `` <=``, > =, i agus not in, a oibríonn go léir cosúil leis na hoibreoirí Python, chomh maith le `` agus``, `` nó`` agus `` ní``, ar tacaíodh leo cheana féin.
Chomh maith leis sin, is féidir scagairí a úsáid anois sa abairt if `. Mar shampla:
<div
{% if user.email|lower == message.recipient|lower %}
class="highlight"
{% endif %}
>{{ message }}</div>
Caching teimpléadLink to this heading
I leaganacha roimhe seo de Django, gach uair a rinne tú teimpléad, déanfaí é a athluchtú ón diosca. I Django 1.2, is féidir leat a:ref: lódóir teimpléad taisceáilte <template-loaders>`a úsáid chun teimpléid a luchtú uair amháin, ansin an toradh a thaisceadh do gach rindreáil ina dhiaidh sin. D'fhéadfadh feabhas suntasach feidhmíochta a bheith mar thoradh air seo má bhriseadh do theimpléid ina go leor fotheimpléid níos lú (ag baint úsáide as na clibeanna ``{%%}` nó {% include%}).
Mar fho-iarsacht, tá sé i bhfad níos éasca anois tacú le teangacha teangacha teimpléid neamh-Django.
Luchtaitheoirí teimpléad aicmbunaitheLink to this heading
Mar chuid de na hathruithe a rinneadh chun Caching Teimpléad a thabhairt isteach agus ag leanúint treocht ghinearálta i Django, modhnaíodh API luchtaithe teimpléad chun meicníochtaí luchtaithe teimpléad a úsáid atá cuimsithe i ranganna Python seachas feidhmeanna, an t-aon mhodh atá ar fáil go dtí Django 1.1.
Tá <template-loaders>na luchtóirí teimpléad uile: ref: sheolta le Django `a iompraíodh chuig an API nua ach cuireann siad an API feidhmion-bhunaithe i bhfeidhm fós agus glacann croí-innealra teimpléad le luchtóirí feidhmion-bhunaithe (bunaithe nó tríú páirtí) mar sin ní gá láithreach do shuíomh `TEMPLATE_LOADERS a mhodhnú i dtionscadail atá ann cheana, leanfaidh rudaí ag obair má fhágann tú é gan teagmháil go dtí agus lena n-áirítear scaoileadh Django 1.3.
If you have developed your own custom template loaders we suggest to consider porting them to a class-based implementation because the code for backwards compatibility with function-based loaders starts its deprecation process in Django 1.2 and will be removed in Django 1.4. There is a description of the API these loader classes must implement in the template API reference and you can also examine the source code of the loaders shipped with Django.
Eochracha nádúrtha i daingneoLink to this heading
Is féidir le daingneáin tagairt a dhéanamh anois do rudaí iargúlta ag baint úsáide:ref: topics-serialization-natural-keys. Is rogha eile í an scéim cuardaigh seo seachas na gnáththagairtí réad bunaithe ar eochair bhunaithe i ndaingneán, léiteacht a fheabhsú agus fadhbanna a réiteach ag tagairt do rudaí nach mbeadh a bpríomh-phríomhluach intuartha nó ar eolas acu.
Teip tapa le haghaidh tástálachaLink to this heading
Tacaíonn an fho-ordú: djadmin: test de django-admin.py` agus an script runtests.py a úsáidtear chun sraith tástála Django féin a reáchtáil le rogha --failfast anois. Nuair a shonraítear é, cuireann an rogha seo faoi deara an tástála imeacht tar éis dó teacht ar theip in ionad leanúint ar aghaidh leis an rith tástála. Ina theannta sin, feabhsaíodh láimhseáil Ctrl-C le linn rith tástála chun imeacht grámhar ón rith tástála a spreagadh a thuairiscíonn sonraí faoi na tástálacha a reáchtáil roimh an gcuid isteach.
BigIntegerfieldLink to this heading
Is féidir le samhlacha cineál 64-giot:class: ~Django.db.Models.BigIntegerField a úsáid anois.
Logánú feabhsaitheLink to this heading
Django's:doc: Leathnaíodh creat idirnáisiúnaitheach le formáidiú agus próiseáil foirmeacha ar an </topics/i18n/index> eolas áitiúil. Ciallaíonn sé sin, má tá sé cumasaithe, taispeánfar dátaí agus uimhreacha ar theimpléid ag baint úsáide as an bhformáid a shonraítear don áitiúil reatha. Úsáidfidh Django formáidí logánaithe freisin agus sonraí á pháirseáil i bhfoirmeacha. Féach: doc: /topics/i18n/formatting le haghaidh tuilleadh sonraí.
readonly_fields i ModelAdminLink to this heading
django.contrib.admin.ModelAdmin.readonly_fields has been added to
enable non-editable fields in add/change pages for models and inlines. Field
and calculated values can be displayed alongside editable fields.
Aibhsiú comhréireachta inLink to this heading
<syntax-coloring>Is féidir leat athróg timpeallachta a:envvar: DJANGO_COLORS a úsáid anois chun na dathanna a úsáideann django-admin.py a mhodhnú nó a dhíchumasú chun: ref: `aibhsiú comhréireachta `a sholáthar.
GeodJangoLink to this heading
The most significant new feature for GeoDjango in 1.2 is support for multiple spatial databases. As a result, the following spatial database backends are now included:
django.contrib.gis.db.backends.postgisdjango.contrib.gis.db.backends.mysqldjango.contrib.gis.db.backends.oracledjango.contrib.gis.db.backends.spatialite
Tacaíonn GeodJango anois leis na cumais shaibhir a chuirtear sa scaoileadh PostGIS 1.5. I measc na ngnéithe nua tá tacaíocht don: ref: cineál tíreolaíochta <geography-type>`agus cumasú o:ref: `fiosruithe achair le geoiméadraí <distance-queries>neamh-phointe ar chórais comhordaithe geografacha.
Cuireadh tacaíocht do réimsí geoiméadra 3D leis, agus féadfar é a chumasú tríd an eochairfhocal: attr: ~django.contrib.gis.db.models.geometryfield.dim a shocrú go 3 i do: class: ~django.contrib.gis.db.models.geometryfield. Cuireadh comhiomlán: Class: ~django.contrib.gis.db.models.ext3D comhiomlán agus modh extent3d () ```GeoquerySet mar chuid den ghné seo.
Tá na modhanna force_rhr () ``, `reverse_geom (), agus geohash () ````GeoquerySet nua.
Nuashonraíodh comhéadan GEOS chun feidhmeanna leabharlainne C atá sábháilte le snáithe a úsáid nuair atá ar fáil ar an ardán.
Ligeann an comhéadan GDAL anois don úsáideoir a:attr: ~django.contrib.gis.gdal.layer.spatial_filter a shocrú ar na gnéithe a cuireadh ar ais agus iad ag athrú thar a:class: ~django.contrib.gis.gdal.layer.
Faoi dheireadh, :doc: Tá doiciméadú “GeodJango” san áireamh anois le Django's agus ní óstáiltear é ar leithligh ag geodjango.org` </ref/contrib/gis/index> a thuilleadh.
Carachtair sonraitheora formáid clib teimpléad nua ano: c` agus uLink to this heading
Tá dhá charachtar formáide nua faighte ag an argóint chuig: ttag: ano: c` chun a shonrú gur chóir luach dáta-ama a fhormáidiú i bhformáid ISO 8601, agus u a cheadaíonn aschur na microtsoicind de luach dáta-ama nó ama.
Tá siad seo ar fáil freisin i gcodanna eile cosúil leis an scagairí teimpléad: tfilter: dáta agus:tfilter: aim, leabharlann clib teimpléad daonann agus an creat nua formáid logánaithe.
Athruithe neamh-chomhoiriúnacha ar chúl i 1.2Link to this heading
Nuair is féidir, tugadh na gnéithe nua thuas isteach ar bhealach atá comhoiriúnach le cúl faoir:doc: 'ár mbeartas cobhsaíochta API</misc/api-stability> '. Ciallaíonn sé seo go leanfaidh gach cód atá ann cheana a d'oibrigh le Django 1.1 ag obair le Django 1.2; tosóidh an cód den sórt sin, áfach, ag eisiúint rabhaidh (féach thíos le haghaidh sonraí).
Mar sin féin, tá dornán gnéithe* athraithe ar bhealaí a bheidh, i gcás roinnt úsáideoirí, ag teacht ar ais láithreach. Tá na hathruithe sin sonraithe thíos.
Cosaint CSRFLink to this heading
Tá athruithe móra déanta againn ar an mbealach a oibríonn cosaint CSRF, mionsonraithe in:doc: </ref/csrf> an doiciméadú CSRF. Seo na hathruithe móra ba chóir duit a bheith ar an eolas fúthu:
Tá CsrfResponseMiddleware` agus
CsrfMiddlewaredíluaite agus bainfear iad go hiomlán i Django 1.4, i bhfabhar clib teimpléad ba chóir a chur isteach i bhfoirmeacha.Úsáideann gach aip ranníoca maisitheoir
csrf_protectchun an radharc a chosaint. Éilíonn sé seo go n-úsáidfear an chlib teimpléidcsrf_tokensa teimpléad. Má d’úsáid tú teimpléid shaincheaptha le haghaidh amhairc ranníoca, NÍ MÓR duit NA TREORACHA Uasghrádaithe a léamh chun na teimpléid sin a dheisiú.Tá
CSRFViewMiddlewaresan áireamh iMIDDLEWARE_CLASSESde réir réamhshocraithe. Casann sé seo ar chosaint CSRF de réir réamhshocraithe, mar sin caithfear tuairimí a ghlacann le hiarratais POST a scríobh chun oibriú leis an middleware. Tá treoracha maidir le conas é seo a dhéanamh le fáil sna doiciméid CSRF.Tá an CSRF go léir bogadh ó chontrib go croí (le allmhairí comhoiriúnacha ar chúl sna sean-áiteanna, atá díscoilte agus scoirfidh siad le tacú leo i Django 1.4).
Modhanna get_db_prep_* () ``ar `FieldLink to this heading
Roimh Django 1.2, bhí an rogha ag saincheaptha ``Field` roinnt feidhmeanna a shainiú chun tacú le tiontú luachanna Python ina luachanna comhoiriúnacha bunachar sonraí. D'fhéadfadh cuma rud éigin ar réimse saincheaptha:
class CustomModelField(models.Field):
...
def db_type(self): ...
def get_db_prep_save(self, value): ...
def get_db_prep_value(self, value): ...
def get_db_prep_lookup(self, lookup_type, value): ...
I 1.2, rinneadh athrú ar na trí mhodh seo ar fhréamhshamhail, agus tugadh dhá mhodh breise isteach:
class CustomModelField(models.Field):
...
def db_type(self, connection): ...
def get_prep_value(self, value): ...
def get_prep_lookup(self, lookup_type, value): ...
def get_db_prep_save(self, value, connection): ...
def get_db_prep_value(self, value, connection, prepared=False): ...
def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False): ...
Teastaíonn na hathruithe seo chun tacú le bunachair sonraí iolracha - ní féidir le db_type agus get_db_prep_* aon toimhde a dhéanamh maidir leis an mbunachar sonraí a bhfuil sé ag ullmhú dó a thuilleadh. Soláthraíonn an argóint nasc anois do na modhanna ullmhúcháin leis an nasc sonrach a bhfuil an luach á ullmhú dó.
Tá an dá mhodh nua ann chun riachtanais ghinearálta ullmhúcháin sonraí a idirdhealú ó riachtanais atá sonrach don bhunachar Úsáidtear an argóint “ullmhaithe” chun a chur in iúl do na modhanna ullmhúcháin bunachar sonraí an bhfuil ullmhúchán luacha cineálach déanta. Má chuirtear luach neamhullmhaithe (ie, Prepared=False) ar fáil do na glaonna ``get_db_prep_* () , ba cheart dóibh na glaonna comhfhreagracha ``get_prep_* () a ghairm chun ullmhúchán cineálach sonraí a dhéanamh.
Tá feidhmeanna comhshó curtha curtha ar fáil againn a thiontú go trédhearcach feidhmeanna a chloíonn leis an sean-fhréamhshamhail ina fheidhmeanna atá comhoiriúnach leis Mar sin féin, bainfear na feidhmeanna comhshó seo i Django 1.4, mar sin ba cheart duit do shainmhínithe ``Field` a uasghrádú chun an fréamhshamhail nua a úsáid chomh luath agus is féidir.
Mura ndearna do mhodhanna get_db_prep_* () ``úsáid as an nasc bunachar sonraí, ba cheart go mbeadh tú in ann uasghrádú trí ``get_db_prep_value () `a athainmniú go ``get_prep_value () agus get_db_prep_lookup () ``. Má theastaíonn tiontaithe sonrach ar bhunachar sonraí uait, ansin beidh ort cur chun feidhme ``get_db_prep_* a sholáthar a úsáideann an argóint nasc chun luachanna sonracha bunachar sonraí a réiteach.
tástáil_pas_úsáideoraithe, logain_riachtanai` agus cead_riachtanaLink to this heading
Soláthraíonn django.contrib.auth.decorators ``do mhaisitheoirí ``login_required, permission_requred` agus user_passes_test. Roimhe seo bhí sé in ann na maisitheoirí seo a úsáid ar fheidhmeanna (i gcás gurb é 'iarratas' an chéad argóint) agus ar mhodhanna (i gcás gurb é 'féin' an chéad argóint, agus 'iarratas' an dara argóint). Ar an drochuair, aimsíodh lochtanna sa chód a thacaíonn leis seo: ní oibríonn sé ach i gcúinsí teoranta, agus táirgeann sé earráidí atá an-deacair a dhífhabhtú nuair nach n-oibríonn sé.
Ar an gcúis seo, baineadh an t-iompar 'uathoibrithe uathoibrí', agus má tá na maisitheoirí seo á úsáid agat ar mhodhanna, beidh ort iarratas a dhéanamh de láimh:func: django.utils.decorators.method_decorator chun an maisitheoir a thiontú go ceann a oibríonn le modhanna. Mar shampla, d'athrófá cód as seo:
class MyClass(object):
@login_required
def my_view(self, request):
pass
chuige seo:
from django.utils.decorators import method_decorator
class MyClass(object):
@method_decorator(login_required)
def my_view(self, request):
pass
nó:
from django.utils.decorators import method_decorator
login_required_m = method_decorator(login_required)
class MyClass(object):
@login_required_m
def my_view(self, request):
pass
Dóibh siúd agaibh a bhí ag leanúint an stoc forbartha, baineann an t-athrú seo freisin le maisitheoirí eile a tugadh isteach ó 1.1, lena n-áirítear csrf_protect, cache_control` agus aon rud a cruthaíodh ag baint úsáide as decorator_from_middleware.
if tag changesLink to this heading
Mar gheall ar ghnéithe nua sa chlib teimpléad:ttag: if `, ní ghlacann sé le 'agus', 'nó' agus 'not' mar ainmneacha bailí** athraithe** a thuilleadh. Roimhe seo, d'fhéadfaí na teaghráin seo a úsáid mar ainmneacha athróg. Anois, cuirtear stádas an eochairfhocal i bhfeidhm i gcónaí, agus caithfidh cód teimpléad mar ``{% mura bhfuil%}` nó {% if and%} ` TemplateSyntaxError . Chomh maith leis sin, is eochairfhocal nua é ``in agus mar sin ní ainm athróg bailí sa chlib seo.
LazyobjectLink to this heading
Is aicme fóntais neamhdhoiciméadaithe ach a úsáidtear go minic é LazyObject` a úsáidtear chun rudaí eile de chineál anaithnid a fhilleadh go leisciúil.
I Django 1.1 agus níos luaithe, láimhseáil sé introspection ar bhealach neamhchaighdeánach, ag brath ar rudaí fillte a chuireann modh poiblí darb ainm get_all_members () `i bhfeidhm. Ós rud é go bhféadfadh comhraic ainmneacha a bheith mar thoradh air seo go héasca, athraíodh é chun an modh caighdeánach introspection Python a úsáid, lena mbaineann ``__members__` agus ``__dir__ () ``.
Má d'úsáid tú LazyObject i do chód féin agus má chuir tú an modh `get_all_members () `i bhfeidhm le haghaidh rudaí fillte, beidh ort cúpla athrú a dhéanamh:
Ar dtús, mura bhfuil riachtanais speisialta ag do rang maidir le hionscrúdú (ie, níl __getattr__ () `curtha i bhfeidhm agat nó modhanna eile a cheadaíonn tréithe nach féidir le gnáthmheicníochtaí a aimsiú), is féidir leat an modh `get_all_members () a bhaint. Déanfaidh an cur i bhfeidhm réamhshocraithe ar LazyObject` an rud ceart.
Má tá riachtanais níos casta agat maidir le hionscrúdú, athainmnigh an modh get_all_members () ``ar dtús go ``__dir__ (). Is é seo an modh caighdeánach introspection do Python 2.6 agus os a chionn. Má theastaíonn tacaíocht uait do leaganacha Python níos luaithe ná 2.6, cuir an cód seo a leanas leis an rang:
__members__ = property(lambda self: self.__dir__())
__dict__ ar chásanna samhailLink to this heading
Go stairiúil, níl ach tréithe a fhreagraíonn do na réimsí ar mhúnla i dtréith __dict__ de shampla samhail.
D'fhonn tacú le cumraíochtaí iolracha bunachar sonraí, chuir Django 1.2 tréith _state ``le cásanna réada. Beidh an tréith seo le feiceáil in ``__dict__ do shampla samhail. Má bhraitheann do chód ar athrá thar __dict__ chun liosta réimsí a fháil, ní mór duit a bheith ullamh anois chun an tréith ``_state ``a láimhseáil nó a scagadh amach.
Cód stádais imeachta an reathóra tástálaLink to this heading
Ní léiríonn cód stádas imeachta na reathaithe tástála (tests/runtests.py` agus ``python manage.py test ``) líon na dtástálacha theip a thuilleadh, toisc go raibh cód stádais imeachta mícheart mar thoradh ar theip 256 tástáil nó níos mó. Is é an cód stádais imeachta don rádálaí tástála anois 0 le haghaidh rath (gan aon tástálacha teip) agus 1 le haghaidh aon líon teipeanna tástála. Más gá, is féidir líon na dteipeanna tástála a fháil ag deireadh aschur an rádálaí tástála.
ModelForm.is_Valid () ``agus ``ModelForm.ErrorsLink to this heading
Tá cuid mhaith den obair bailíochtaithe do ModelForms bogadh síos go leibhéal an mhúnla. Mar thoradh air sin, an chéad uair a ghlaonn tú ar ModelForm.is_Valid () `, rochtain a fháil ar ``ModelForm.errors` nó bailíochtú foirm a spreagann tú ar shlí eile, glanfar do mhúnla in áit. Bhí an tiontú seo ag tarlú nuair a shábháiltear an tsamhail. Má theastaíonn sampla neamh-mhodhnaithe de do mhúnla uait, ba chóir duit cóip a chur chuig an tógálaí ``ModelForm ``.
Booleanfield ar MySQLLink to this heading
In previous versions of Django, a model's BooleanField under MySQL
would return its value as either 1 or 0, instead of True
or False; for most people this wasn't a problem because bool
is a subclass of int in Python. In Django 1.2, however,
BooleanField on MySQL correctly returns a real bool. The only
time this should ever be an issue is if you were expecting the
repr of a BooleanField to print 1 or 0.
Athruithe ar an léirmhíniú ar max_num i FormSetsLink to this heading
<formsets-max-num><model-formsets-max-num>Mar chuid de fheabhsuithe a rinneadh ar láimhseáil FormSets, tá athrú beagán tagtha ar luach réamhshocraithe agus léirmhíniú an pharaiméadar max_num chuig feidhmeanna: ref: django.forms.formset_factory () `agus:ref: `django.forms.modelformset_factory (). Bíonn tionchar ag an athrú seo freisin ar an mbealach a úsáidtear argóint an:attr: ~django.contrib.admin.inlineModelAdmin.max_num le haghaidh rudaí riaracháin inlíne.
Roimhe seo, ba é 0` (nialas) an luach réamhshocraithe do max_num. Ansin d'úsáid FormSets luach boolean max_num chun a chinneadh an raibh teorainn le forchur ar líon na bhfoirmeacha a ghintear. Chiallaigh luach réamhshocraithe 0 nach raibh aon teorainn réamhshocraithe ar líon na bhfoirmeacha i FormSet.
Ag tosú le 1.2, athraíodh an luach réamhshocraithe do max_num go None, agus déanfaidh FormSets idirdhealú idir luach None agus luach 0. Léiríonn luach None nach bhfuil aon teorainn le forchur ar líon na bhfoirmeacha; léiríonn luach 0 gur chóir uasmhéid 0 fhoirm a fhorchur. <model-formsets-max-num>Ní gá go gciallaíonn sé seo nach dtaispeánfar aon fhoirmeacha - féach an doiciméadú: ref: `ModelFormSet `le haghaidh tuilleadh sonraí.
Má bhí luach 0 á shonrú agat de láimh do max_num`, beidh ort do chuid sainmhínithe FormSet agus/nó riaracháin a nuashonrú.
Ríomhphost_reLink to this heading
Tá abairt rialta neamhdhoiciméadaithe chun seoltaí ríomhphoist a bhailíochtú aistrithe ó django.form.fields go django.core.validators `. Beidh ort d'allmhairí a nuashonrú má tá tú á úsáid.
Gnéithe atá díscríofa i 1.2Link to this heading
Faoi dheireadh, déanann Django 1.2 roinnt gnéithe ó eisiúintí níos luaithe. Tacaítear leis na gnéithe seo fós, ach déanfar iad a dhíchur de réir a chéile thar na cúpla timthriall scaoilte amach romhainn.
Ardóidh an cód a bhaineann leas as aon cheann de na gnéithe thíos PendingDeprecationWarning i Django 1.2. Beidh an rabhadh seo ciúin de réir réamhshocraithe, ach féadfar é a chasadh air ag baint úsáide as modúl Python: MOD: rabhaigh, nó trí Python a reáchtáil le bratach -Wd nó -Wall.
I Django 1.3, beidh na rabhaidh seo ina DeprecationWarning`, ar* níl* ciúin. I Django 1.4 bainfear tacaíocht do na gnéithe seo go hiomlán.
Sonraí sonraíLink to this heading
Roimh Django 1.2, d'úsáid Django roinnt socruithe chun rochtain ar bhunachar sonraí amháin a rialú. Tugann Django 1.2 isteach tacaíocht do bhunachair shonraí iolracha, agus mar thoradh air sin tá athrú tagtha ar an mbealach a shainíonn tú socruithe bunachar sonraí.
Leanfaidh aon chomhad socruithe Django atá ann cheana ag obair mar a bhíothas ag súil go dtí Django 1.4. Go dtí sin, aistrítear socruithe bunachar sonraí sean-stíl go huathoibríoch go formáid nua.
Sa fhormáid sean-stíl (pre 1.2), bhí roinnt socruithe DATABASE_ agat i do chomhad socruithe. Mar shampla:
DATABASE_NAME = "test_db"
DATABASE_ENGINE = "postgresql_psycopg2"
DATABASE_USER = "myusername"
DATABASE_PASSWORD = "s3krit"
Tá na socruithe seo anois i bhfoclóir darb ainmne:setting: DATABASES. Freagraíonn gach mír sa fhoclóir do nasc bunachar sonraí amháin, agus an t-ainm ``default' ``cur síos ar an nasc réamhshocraithe bunachar sonraí. Giorraíodh na hainmneacha socraithe freisin. Bheadh cuma seo ar na socruithe samplacha roimhe seo anois:
DATABASES = {
"default": {
"NAME": "test_db",
"ENGINE": "django.db.backends.postgresql_psycopg2",
"USER": "myusername",
"PASSWORD": "s3krit",
}
}
Bíonn tionchar aige seo ar na socruithe seo a leanas:
Sean-shuíomh |
Suíomh Nua |
|---|---|
|
<DATABASE-ENGINE>: socrú: `INNEALL ` |
|
|
|
|
|
: socrú: ROGHANNAÍ |
``BUNACHAR SONRAÍ_PASFHOCAL `` |
|
|
|
|
|
|
|
|
|
|
Tá na hathruithe seo ag teastáil freisin má chruthaigh tú nasc bunachar sonraí de láimh ag baint úsáide as DatabaseWrapper () ó do chúltaca bunachar sonraí de rogha.
Chomh maith leis an athrú ar struchtúr, baineann Django 1.2 an láimhseáil speisialta le haghaidh cúltaca bunachar sonraí ionsuite. Caithfear gach cúltaca bunachar sonraí a shonrú anois le ainm modúl láncháilithe (ie, django.db.backends.postgresql_psycopg2, seachas postgresql_psycopg2).
cúltaca bunachar sonraí postgresqlLink to this heading
Níor nuashonraíodh an leabharlann psycopg1 ó Dheireadh Fómhair 2005. Mar thoradh air sin, tá cúltaca bunachar sonraí postgresql`, a úsáideann an leabharlann seo, curtha in iúl.
Má tá an cúltaca postgresql` á úsáid agat faoi láthair, ba chóir duit aistriú chuig an gcúltaca postgresql_psycopg2` a úsáid. <DATABASE-ENGINE>Chun do chód a nuashonrú, suiteáil an leabharlann ``psycopg2` agus athraigh an socrú: 'ENGINE' chun `django.db.backends.postgresql_psycopg2 a úsáid.
Meán-earraí athscríbhneoireachta freagartha CSRFLink to this heading
Tá CsrfResponseMiddleware, ', an middleware a chuir comharthaí CSRF isteach go huathoibríoch i bhfoirmeacha POST ``i leathanaigh amach, i bhfabhar modh clibeanna teimpléad (féach thuas), agus bainfear é go hiomlán i Django 1.4. Tá `CsrfMiddleware`, lena n-áirítear feidhmiúlacht ``CsrfResponseMiddleware agus CsrfViewMiddleware, díluaite mar an gcéanna.
Chomh maith leis sin, tá modúl CSRF tar éis bogadh ó chontrib go croí, agus tá na sean-allmhairí míchuige, mar a thuairiscítear sna nótaí uasghrádaithe.
SMTPConnectionLink to this heading
Tá an rang ``SMTPConnection` díluaite i bhfabhar API cúltaca ríomhphoist cineálach. Seanchód a chuir isteach go sainráite sampla de SMTPConnection:
from django.core.mail import SMTPConnection
connection = SMTPConnection()
messages = get_notification_email()
connection.send_messages(messages)
...should now call get_connection() to
instantiate a generic email connection:
from django.core.mail import get_connection
connection = get_connection()
messages = get_notification_email()
connection.send_messages(messages)
Ag brath ar luach an socruithe:: EMAIL_BACKEND, ní fhéadfaidh sé seo nasc SMTP a thabhairt ar ais. Má theastaíonn nasc SMTP uait go sainráite chun ríomhphost a sheoladh leis, is féidir leat nasc SMTP a iarraidh go sainráite:
from django.core.mail import get_connection
connection = get_connection("django.core.mail.backends.smtp.EmailBackend")
messages = get_notification_email()
connection.send_messages(messages)
If your call to construct an instance of SMTPConnection required
additional arguments, those arguments can be passed to the
get_connection() call:
connection = get_connection(
"django.core.mail.backends.smtp.EmailBackend", hostname="localhost", port=1234
)
Teachtaireachtaí úsáideora APILink to this heading
Tá an API chun teachtaireachtaí a stóráil sa tsamhail Message úsáideora (trí user.message_set.create) as dul in iúl anois agus bainfear é i Django 1.4 de réir an chaighdeán:doc: próiseas scaoil </internals/release-process>.
Chun do chód a uasghrádú, ní mór duit aon chásanna seo a chur in ionad:
user.message_set.create("a message")
... leis an méid seo a leanas:
from django.contrib import messages
messages.add_message(request, messages.INFO, "a message")
Ina theannta sin, má úsáideann tú an modh, ní mór duit an méid seo a leanas a chur in ionad:
for message in user.get_and_delete_messages():
...
... le:
from django.contrib import messages
for message in messages.get_messages(request):
...
Le haghaidh tuilleadh faisnéise, féach an iomlán:doc: teachtaireachtaí doiciméadúcháin </ref/contrib/messages>. Ba chóir duit tosú ag nuashonrú do chód chun an API nua a úsáid láithreach.
Feidhmeanna cúnta formáid dátaLink to this heading
Tá django.utils.translation.get_date_formats () ``agus ``django.utils.translation.get_partial_date_formats () i bhfabhar na nglaonna iomchuí chuig django.utils.formats.get_format () `, atá ar an eolas áitiúil nuair a shocraítear USE_L10N go`` True`, agus titeann sé ar ais go socruithe réamhshocraithe má tá sé socraithe go False.
Chun na formáidí dáta éagsúla a fháil, in ionad seo a scríobh:
from django.utils.translation import get_date_formats
date_format, datetime_format, time_format = get_date_formats()
... Úsáid:
from django.utils import formats
date_format = formats.get_format("DATE_FORMAT")
datetime_format = formats.get_format("DATETIME_FORMAT")
time_format = formats.get_format("TIME_FORMAT")
Nó, agus luach dáta á fhormáidiú go díreach:
from django.utils import formats
value_formatted = formats.date_format(value, "DATETIME_FORMAT")
Baineann an rud céanna leis na globaí atá le fáil in django.forms.fields:
FORMÁIDÍ DÁTA_IONCHUIR RÉAMHSHOCRAITHEFORMÁIDÍ IONCHUIR AMA RÉAMHSHOCRAITHEACH``FORMÁIDÍ DÁTA RÉAMHSHOCRAITHE_IONCHUIRIÚCHÁIN ``
Úsáid ``django.utils.formats.get_format () ``chun na formáidí cuí a fháil.
Reathaithe tástála feidhmbunaitheLink to this heading
Athraíonn Django 1.2 na huirlisí rádálaí tástála chun cur chuige rangbhunaithe a úsáid. <topics-testing-test_runner>Oibreoidh reathaithe tástála bunaithe ar fheidhm sean-stíl fós, ach ba chóir iad a nuashonrú chun na reathaithe nua:ref: `rang-bhunaithe `a úsáid.
ID teachtaireachta teicniúlaLink to this heading
Suas le leagan 1.1 D'úsáid Django IDanna teachtaireachta teicniúla chun an fhéidearthacht a sholáthar do logálaithe formáidí dáta agus ama a aistriú. Bhí siad <translation string>inaistrithe: téarma: teaghráin aistriúcháin `a d'fhéadfaí a aithint toisc gur uachtarchás iad uile (mar shampla:setting: `DATETIME_FORMAT, :setting: DATE_FORMAT, :setting: TIME_FORMAT). <locale name>Tá siad curtha i bhfabhar an bonneagar nua:doc: /topics/i18n/formatting a ligeann do logálaithe an fhaisnéis sin a shonrú i gcomhad formats.py san eolaire comhfhreagrach ``django/conf/locale/ ``.
GeodJangoLink to this heading
To allow support for multiple databases, the GeoDjango database internals were
changed substantially. The largest backwards-incompatible change is that
the module django.contrib.gis.db.backend was renamed to
django.contrib.gis.db.backends, where the full-fledged
spatial database backends now exist. The
following sections provide information on the most-popular APIs that
were affected by these changes.
SpatialBackendLink to this heading
Prior to the creation of the separate spatial backends, the
django.contrib.gis.db.backend.SpatialBackend object was
provided as an abstraction to introspect on the capabilities of
the spatial database. All of the attributes and routines provided by
SpatialBackend are now a part of the ops attribute of the
database backend.
Cuirtear an sean-mhodúl django.contrib.gis.db.backend fós ar fáil le haghaidh rochtain comhoiriúnachta cúil ar réad SpatialBackend, nach bhfuil ach ainm ar an modúl ops den nasc bunachar sonraí spásúil*default*.
Ceanglaítear ar úsáideoirí a bhí ag brath ar mhodúil agus ar rudaí neamhdhoiciméadaithe laistigh de django.contrib.gis.db.backend, seachas na teibí a sholáthraíonn ``SpatialBackend`, a gcód a mhodhnú. Mar shampla, an t-allmhairiú seo a leanas a oibreodh in 1.1 agus thíos:
from django.contrib.gis.db.backend.postgis import PostGISAdaptor
Bheadh gá é a athrú:
from django.db import connection
PostGISAdaptor = connection.ops.Adapter
Samhlacha SpatialRefsys agus GeometryColumnsLink to this heading
I leaganacha roimhe seo de GeodJango, bhí: mod: django.contrib.gis.db.models samhlacha spatialRefsys` agus ``GeometryColumns chun táblaí meiteashonraí spásúla OGC spatial_ref_sys agus geometry_columns a cheistiú, faoi seach.
Cé go gcuirtear na hainmneacha seo ar fáil fós, níl siad ach don nasc bunachar sonraí réamhshocraithe agus níl ann ach má tá an nasc réamhshocraithe ag úsáid cúltaca bunachar sonraí spásúil tacaithe.
Chun na SpatialRefsys` agus GeometryColumns ceart a fháil do do bhunachar sonraí spásúil bain úsáid as na modhanna a sholáthraíonn an cúltaca spásúil:
>>> from django.db import connections >>> SpatialRefSys = connections["my_spatialite"].ops.spatial_ref_sys() >>> GeometryColumns = connections["my_postgis"].ops.geometry_columns()
Cód teanga noLink to this heading
Tá an cód teanga níos coitianta nb á chur in ionad an cód teanga a úsáidtear faoi láthair do Bokmål na hIorua ``no ``.
Luchtaitheoirí teimpléad bunaitheLink to this heading
Athraíonn Django 1.2 an meicníocht lódála teimpléid chun cur chuige rang-bhunaithe a úsáid. Beidh lódairí teimpléid sean-stíl bunaithe ar fheidhm fós ag obair, ach ba cheart iad a nuashonrú chun na lódairí teimpléid rangbhunaithe nua a úsáid.