Nótaí scaoilte Django 1.1Link to this heading

29 Iúil, 2009

Fáilte go dtí Django 1.1!

Cuimsíonn Django 1.1 roinnt nifty:ref: gnéithe nua <whats-new-1.1>, go leor socruithe fabht, agus cosán uasghrádaithe éasca ó Django 1.0.

Athruithe neamh-chomhoiriúnacha ar chúl i 1.1Link to this heading

Tá beartas ag Django de:doc: Cobhsaíocht API </misc/api-stability>. Ciallaíonn sé seo gur chóir go leanfadh cód a fhorbraíonn tú i gcoinne Django 1.0 ag obair i gcoinne 1.1 gan athrú. Mar sin féin, déanaimid athruithe neamhchomhoiriúnacha ar chúl uaireanta má tá siad riachtanach chun fabhtanna a réiteach, agus tá dornán athruithe den sórt sin (mion) idir Django 1.0 agus Django 1.1.

Sula n-uasghrádú a dhéanamh go Django 1.1 ba chóir duit seiceáil faoi dhó nach mbíonn tionchar ag na hathruithe seo a leanas ort, agus do chód a uasghrádú má dhéanann siad.

Athruithe ar ainmneacha sriantaLink to this heading

Athraíonn Django 1.1 an modh a úsáidtear chun ainmneacha srianta bunachar sonraí a ghiniúint ionas go mbeidh ainmneacha comhsheasmhach beag beann ar mhéid focal Níl an t-athrú seo ag teacht ar ais do roinnt úsáideoirí.

Má tá ardán 32-giotán á úsáid agat, tá tú as an crúca; ní bhreathnóidh tú aon difríochtaí mar thoradh ar an athrú seo.

Mar sin féin, d'fhéadfadh go mbeadh roinnt fadhbanna** ag úsáideoirí ar ardáin 64-giotán** ag baint úsáide as an ordú bainistíochta ``athshocraí` Roimh an athrú seo, ginearfadh ardáin 64-giotán díleá 64-giotán, 16 charachtar san ainm srianta; mar shampla:

SQL
ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_5e8f10c132091d1e FOREIGN KEY ...

Tar éis an athraithe seo, ginfidh gach ardán, beag beann ar mhéid an fhocail, díleá 32-giotán, 8 charachtar san ainm srianta; mar shampla:

SQL
ALTER TABLE myapp_sometable ADD CONSTRAINT object_id_refs_id_32091d1e FOREIGN KEY ...

Mar thoradh ar an athrú seo, ní bheidh tú in ann an t-ordú bainistíochta ``reset ``a úsáid ar aon tábla a dhéanann meaisín 64-giotán. Tá sé seo toisc nach n-oireann an t-ainm nua a ghintear leis an ainm a ghintear go stairiúil; mar thoradh air sin, beidh an SQL a thógtar leis an ordú athshocraithe neamhbhailí.

Más gá duit feidhmchlár a cruthaíodh le srianta 64-giotán a athshocrú, beidh ort an sean-srian a scaoileadh de láimh sula n-iarrtar ar ``athshocraí`.

Déantar cásanna tástála a reáchtáil anois in idirbheartLink to this heading

Ritheann Django 1.1 tástálacha taobh istigh d'idirbheart, rud a cheadaíonn feidhmíocht tástála níos fearr (féach feabhsuithe feidhmíochta tástála le haghaidh sonraí).

Tá an t-athrú seo beagán ar gcúl neamh-chomhoiriúnach más gá do thástálacha atá ann cheana iompar idirbheartaíochta a thástáil, má bhíonn siad ag brath ar thoimhdí neamhbhailí faoin timpeallacht tástála, nó má theastaíonn ordú cás tástála sonrach uathu.

Maidir leis na cásanna seo, is féidir :class: ~django.test.transactionTestCase a úsáid ina ionad. Níl anseo ach socrú tapa chun timpeall ar earráidí cásanna tástála a nochtann an cur chuige athiompaithe nua; sna tástálacha fadtéarmacha ba cheart iad a athscríobh chun an cás tástála a cheartú.

Bainte SetRemoteAddrfromForWardedFor middlewareLink to this heading

Ar mhaithe le áisiúlacht, chuimsíonn Django 1.0 rang roghnach middleware - Django.middleware.http.setRemoteAddrFromForwardedFor - a nuashonraigh luach REMOTE_ADDR bunaithe ar an gceannteideal HTTP X-Forwarded-For a shocraíonn go coitianta ag roinnt cumraíochtaí seachfhreastalaí.

Léiríodh nach féidir an meicníocht seo a dhéanamh iontaofa go leor le húsáid ghinearálta, agus go bhféadfadh forbróirí feidhmchláir glacadh leis go bhfuil luach REMOTE_ADDR “sábháilte” nó iontaofa ar bhealach éigin iontaofa mar fhoinse fíordheimhnithe.

Cé nach saincheist slándála é go díreach, shocraigh muid an middleware seo a bhaint leis an scaoileadh Django 1.1. Cuireadh rang a chur in ionad air nach ndéanann aon rud seachas DeprecationWarning a ardú.

Má bhí tú ag brath ar an meán-earraí seo, is é an cosán uasghrádaithe is éasca:

  • Scrúdaigh `an cód mar a bhí ann sula mbainíodh é `__.

  • Deimhnigh go n-oibríonn sé i gceart le do sheachfhreastalaí réamhtheachtacha, agus modhnaigh é chun tacú le do sheachfhreastalaí ar leith (más gá).

  • Tabhair isteach do leagan modhnaithe de SetRemoteAdDrFromForWardedFor mar phíosa meán-earraí i do thionscadal féin.

Tá ainmneacha na gcomhaid uaslódáilte ar fáilLink to this heading

I Django 1.0, sábháladh comhaid a uaslódáil agus a stóráiltear i samhail:class: FileField ar dhiosca sula sábháladh an tsamhail ar an mbunachar sonraí. Chiallaigh sé seo go raibh ainm iarbhír an chomhaid a shanntar don chomhad ar fáil sula sábháladh é. Mar shampla, bhí sé ar fáil i láimhseálaí comhartha réamhshábhála samhail.

I Django 1.1 sábháltar an comhad mar chuid den tsamhail a shábháil sa bhunachar sonraí, mar sin ní féidir brath ar an ainm comhaid iarbhír a úsáidtear ar dhiosca go dt* go ndéantar an tsamhail a shábháil.

Athruithe ar an gcaoi a sábháltar foirmeacha samhailLink to this heading

I Django 1.1, glaonn: class: ~Django.Forms.Models.BaseModelFormSet anois ``ModelForm.save () ``.

Tá sé seo comhoiriúnach ar ais má bhí tú ag modhnú self.initial i __init__ foirmset samhail, nó má bhraith tú ar na tréithe inmheánacha _total_form_count_initial_form_count de BaseFormSet. Is modhanna poiblí iad na tréithe sin anois.

Socraigh iompar éalaithe an scagaire ``comhoiriúnaí`Link to this heading

Ní éalaíonn an scagaire: TFilter: join an luach liteartha a chuirtear isteach don chónascaire a thuilleadh.

Tá sé seo comhoiriúnach ar chúl do staid speisialta an teaghrán litriúil ina bhfuil ceann de na cúig charachtar HTML speisialta. Mar sin, má bhí tú ag scríobh {{foo|join: "&”}}, caithfidh tú anois {{foo|join: "&”}} a scríobh.

Ba fabht an t-iompar roimhe seo agus contrártha leis an méid a doiciméadaíodh agus a raibh súil leis.

Athreoruithe buana agus an radharc cineálach ``redirect_to () ``Link to this heading

Cuireann Django 1.1 argóint permanent leis an radharc ``django.views.generic.simple.redirect_to () ``. Tá sé seo comhoiriúnach go teicniúil ar ais má bhí tú ag úsáid an radharc ``redirect_to` le eochair teaghrán formáide ar a dtugtar 'buan', rud nach dócha go mór.

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

Tá gné amháin marcáilte mar dhíscríofa i Django 1.1:

  • Níor chóir duit `Adminsite.root () `a úsáid a thuilleadh chun na tuairimí riaracháin sin a chlárú. Is é sin, má tá an líne i do URLConf:

    Code
    (r"^admin/(.*)", admin.site.root),
    

    Ba chóir duit é a athrú chun léamh:

    Code
    (r"^admin/", include(admin.site.urls)),
    

Ba chóir duit tosú ag úsáid an ghné seo a bhaint as do chód láithreach.

Ardóidh adminsite.root PendingDeprecationWarning má úsáidtear é i Django 1.1. Tá an rabhadh seo i bhfolach de réir réamhshocrú. I Django 1.2, déanfar an rabhadh seo a uasghrádú go DeprecationWarning, a thaispeánfar go hard. Bainfidh Django 1.3 ``adminsite.root () ``go hiomlán.

Le haghaidh tuilleadh sonraí faoinár mbeartais agus straitéis díghabhála, féach:doc: /internals/release-process.

Cad atá nua i Django 1.1Link to this heading

Go leor: ó Django 1.0, rinneamar 1,290 tiomantas cód, shocraigh muid 1,206 fabht, agus chuireamar thart ar 10,000 líne doiciméadaithe leis.

Is iad na príomhghnéithe nua i Django 1.1:

Feabhsuithe ORMLink to this heading

Cuireadh dhá mhórfheabhsú le mapálaí réad-choibhneasta (ORM) Django: tacaíocht chomhiomlán, agus nathanna fiosrúcháin.

Tacaíocht chomhiomlánLink to this heading

Is féidir anois ceisteanna comhiomlána SQL a reáchtáil (ie COUNT () ``, `MAX (), ``MIN () ``, srl.) ó laistigh de ORM Django. Is féidir leat a roghnú torthaí an chomhiomlán a thabhairt ar ais go díreach, nó anótáil a dhéanamh ar na rudaí in a:class: ~django.db.models.query.queryset le torthaí an cheistiúcháin chomhiomlán.

Tá an ghné seo ar fáil mar mhodhanna nua:meth: ~django.db.models.query.queryset.aggregate agus:meth: ~django.db.models.queryset.annotate, agus tá sé clúdaithe go mion in:doc: an doiciméadú comhiomlán</topics/db/aggregation> aithe ORM.

Nathanna fiosraitheLink to this heading

Is féidir le ceisteanna tagairt a dhéanamh anois do réimse eile ar an gceist agus is féidir leo caidrimh a thrasú chun tagairt a dhéanamh do réimsí ar mhúnlaí <django.db.models.F>Cuirtear é seo i bhfeidhm sa réad nua:class: ~django.db.Models.f; le haghaidh sonraí iomlána, lena n-áirítear samplaí, téigh i gcomhairle la:class: F expressions doiciméadach.

Feabhsuithe samhailLink to this heading

Cuireadh roinnt gnéithe le ciseal samhail Django:

Múnlaí “neamh-bhainistithe”Link to this heading

Is féidir leat rialú anois cibé an mbainistíonn Django saolré na dtáblaí bunachar sonraí do mhúnla ag baint úsáide as an rogha samhail: attr: ~Options.managed. Réamhshocraíonn sé seo go True, rud a chiallaíonn go gcruthóidh Django na táblaí bunachar sonraí cuí i syncdb` agus bainfidh sé iad mar chuid den ordú reset. Is é sin, bainistíonn Django* saolré an tábla bunachar sonraí.

Má shocraíonn tú é seo go False, áfach, ní dhéanfar aon tábla bunachar sonraí a chruthú nó a scriosadh go huathoibríoch don tsamhail seo. Tá sé seo úsáideach má léiríonn an tsamhail tábla atá ann cheana nó dearcadh bunachar sonraí a cruthaíodh ar bhealach éigin eile.

Le haghaidh tuilleadh sonraí, féach an doiciméadú don rogha: attr: ~Options.managed.

Múnlaí proxyLink to this heading

Is féidir leat anois:ref: `seachfsamhlacha <proxy-models>`a chruthú anois: fo-aicmí de mhúnlaí atá ann cheana nach gcuireann ach iompar ar leibhéal Python (seachas leibhéal bunachar sonraí) agus nach léiríonn tábla nua iad. Is é sin, is proxy é an tsamhail nua do roinnt samhail bhunúsach, a stóráilíonn na sonraí fíor go léir.

Is féidir na sonraí go léir a fháil sa doiciméadú samhlacha seachfhreastalaí. Tá an ghné seo cosúil ar an dromchla le samhlacha neamhbhainistithe, agus mar sin tá míniú sa cháipéisíocht ar :tag:`conas a dhifríonn samhlacha seachfhreastalaí ó mhúnlaí neamhbhainistithe <proxy-vs-unmanaged-models>`.

Réimsí iarchurthaLink to this heading

I roinnt cásanna casta, d'fhéadfadh réimsí a bheith i do mhúnlaí a d'fhéadfadh go leor sonraí a bheith ann (mar shampla, réimsí móra téacs), nó a dteastaíonn próiseáil daor ag teastáil chun iad a thiontú go rudaí Python. Má tá a fhios agat nach dteastaíonn na réimsí áirithe sin uait, is féidir leat a rá anois do Django gan iad a aisghabháil ón mbunachar sonraí.

Déanfaidh tú é seo leis na modhanna nua Queryset: meth: ~django.db.models.query.queryset.defer agus:meth: ~django.db.models.query.queryset.only.

Feabhsuithe tástálaLink to this heading

Rinneadh roinnt feabhsuithe suntasacha ar: doc: `creat tástála</topics/testing/index> '.

Feabhsúcháin feidhmíochtaLink to this heading

Ritheann tástálacha atá scríofa ag baint úsáide as Django: Doc: creat tástála go mór </topics/testing/index> níos gasta anois (chomh hard le 10 n-uaire níos gasta i go leor cásanna).

Cuireadh i gcrích é seo trí thástálacha bunaithe ar idirbhearta a thabhairt isteach: nuair a úsáidtear: class: django.test.testcase, reáchtálfar do thástálacha anois in idirbheart a rolltar ar ais nuair a bheidh críochnaithe, in ionad tríd an mbunachar sonraí a shruthlú agus a athlíonadh. Mar thoradh air seo tá luas ollmhór ag an gcuid is mó de na cineálacha tástálacha aonaid. Féach an doiciméadú le haghaidh: class: TestCase agus:class: TransactionTestCase le haghaidh tuairisc iomlán, agus roinnt nótaí tábhachtacha maidir le tacaíocht bunachar sonraí.

Tástáil feabhsuithe cliantLink to this heading

Rinneadh cúpla feabhsúcháin bheaga - ach an-úsáideach - ar an gcliant tástála:

  • Is féidir leis an tástála:class: Client anois atreoruithe a leanúint go huathoibríoch leis an argóint follow chuig:meth: Client.get agus:meth: Client.post. Déanann sé seo tuairimí tástála a eisíonn atreoruithe níos simplí.

  • Tá sé níos éasca anois teacht ar chomhthéacs an teimpléid sa fhreagra a thug an cliant tástála ar ais: ní bheidh tú ach rochtain ar an gcomhthéacs mar request.context [key] ``. an seanbhealach, a dhéileálann le ``request.context mar liosta comhthéacsanna, ceann amháin do gach teimpléad rindreáilte sa slabhra oidhreachta, ar fáil fós má theastaíonn sé uait.

Gnéithe nua riaracháinLink to this heading

Cuireann Django 1.1 cúpla gné nua iontach le comhéadan riaracháin Django:

Réimsí in-eagarthóireachta ar an liosta athraitheLink to this heading

<admin-list-editable>Is féidir leat réimsí a chur in eagar anois ar thuairimí an liosta riaracháin tríd an rogha riaracháin nua:ref: `list_editable `admin. Taispeánfar na réimsí seo mar ghuirléidí foirme ar na leathanaigh liosta, agus is féidir iad a chur in eagar agus a shábháil ar an mórchóir.

“Gníomhartha” RiaracháinLink to this heading

Is féidir leat a shainiú anois :doc: gníomhaíochtaí admin </ref/contrib/admin/actions> ar féidir leo gníomh éigin a dhéanamh do ghrúpa samhlacha ar an mórchóir. Beidh úsáideoirí in ann oibiachtaí a roghnú ar leathanach an liosta athruithe agus ansin na gníomhartha toirtiúla seo a chur i bhfeidhm ar gach réad roghnaithe.

Seolann Django le gníomh riaracháin réamhshainithe amháin chun grúpa rudaí a scriosadh i gcás amháin.

Próiseáil amharc coinníollLink to this heading

Tá tacaíocht i bhfad níos fearr ag Django anois do próiseáil amhairc choinníollach ag baint úsáide as na ceanntásca caighdeánacha ETag agus Last-Adified HTTP. Ciallaíonn sé seo gur féidir leat próiseáil amhairc ghearrchiorcaid a phróiseáil go héasca trí choinníollacha nach bhfuil chomh daor sin a thástáil. I gcás go leor tuairimí is féidir go dtiocfadh feabhas mór ar luas agus laghdú ar bandaleithead dá bharr.

Spásanna ainmneacha URLLink to this heading

Feabhsaíonn Django 1.1: ref: `patrúin URL ainmnithe <naming-url-patterns>`trí URL “spais ainmneacha” a thabhairt isteach.

I mbeagán focal, ceadaíonn an ghné seo an grúpa céanna URLanna, ón bhfeidhmchlár céanna, a áireamh i URLConf Django arís agus arís eile, le réamhfhoirmeacha ainmnithe éagsúla (agus a d'fhéadfadh a bheith neadaithe) a úsáidfear agus réiteach droim á dhéanamh. Is é sin le rá, féadfar feidhmchláir in-athúsáidte mar chomhéadan riaracháin Django a chlárú arís agus arís eile gan coinbhleachtaí URL.

<topics-http-defining-url-namespaces>Le haghaidh sonraí iomlána, féach:ref: `an doiciméadú maidir le spaisí ainmneacha URL a shainiú `.

GeodJangoLink to this heading

I Django 1.1, :doc: GeodJango (ie django.contrib.gis </ref/contrib/gis/index>) tá roinnt gnéithe nua:

  • Tacaíocht do Spatialite - bunachar sonraí spásúil do SQLite - mar chúltaca spásúil.

  • Comhiomláin gheografacha (Collect, Extent`, Makeline, Union) agus abairtí F.

  • Modhanna nua GeoquerySet: baili, geojson`, agus snap_to_grid.

  • Modhanna comhéadan liosta nua le haghaidh rudaí ``Geosgeoimetry'.

Le haghaidh tuilleadh sonraí, féach an doiciméadú GeodJango.

Feabhsuithe eileLink to this heading

I measc na ngnéithe agus athruithe nua eile a tugadh isteach ó Django 1.0 tá:

  • Tá an: Doc: “Meán-earraí cosanta CSRF” roinnte ina dhá rang -- “CSRFViewMiddleware” seiceálann iarratais atá ag teacht isteach, agus próiseálann ``CSRFresponsemiddleware` </ref/csrf> freagraí amach. Tá an rang comhcheangailte CSRFmiddleware (a dhéanann an dá cheann) fós le haghaidh comhoiriúnacht ar ais, ach moltar anois na ranganna scoilte a úsáid chun rialú mionghráin a cheadú ar cathain agus cá háit a dtarlaíonn an próiseáil CSRF.

  • Oibríonn reverse () ``agus cód a úsáideann é (m.sh., clib teimpléad {% url%} ) anois le URLanna i láithreán riaracháin Django, ar choinníoll go bhfuil URLanna riaracháin curtha ar bun trí `include (admin.site.urls) (iarratais riaracháin a sheoladh chuig an radharc admin.site.root` fós ag obair, ach ní chumraítear URLanna sa admin nuair a bheidh” ar an mbealach seo).

  • Is féidir leis an bhfeidhm ``include () i modúil Django URLConf glacadh anois le seicheamh patrúin URL (a ghintear ag ``patrúin ()) i dteannta ainmneacha modúl.

  • </topics/forms/index> <input type="hidden">Tá dhá mhodh breise ag cásanna foirmeacha Django (féach:doc: forbhreathnú ar na foirmeach) anois, hidden_fields () ``agus ``feice_fields (), a thugann liosta na réimsí i bhfolach - ie, ```` - agus réimsí infheicthe ar an bhfoirm, faoi seach.

  • Glacann an dearcadh cineálach redirect_to anois le argóint eochairfhocal breise permanent. Más é `buan True`, astóidh an dearcadh atreorú buan HTTP (cód stádais 301). Má tá False, astóidh an dearcadh atreorú sealadach HTTP (cód stádais 302).

  • Cuireadh cineál nua cuardaigh bunachar sonraí - week_day -- le haghaidh DateField agus DateTimeField. Glacann an cineál cuardaigh seo le huimhir idir 1 (Dé Domhnaigh) agus 7 (Dé Sathairn), agus filleann sé rudaí ina n-oireann luach an réimse leis an lá sin den tseachtain. <field-lookups>Féach: tagairt: `liosta iomlán na gcineálacha cuardaigh `le haghaidh sonraí.

  • Glacann an chlib {% le haghaidh %} i dteanga teimpléid Django anois le clásal roghnach { % folamh %}, a thaispeánfar nuair a iarrtar ar {% do %} lúbadh thar fholamh seicheamh. Féach an liosta de na clibeanna teimpléid ionsuite le haghaidh samplaí de seo.

  • Glacann an t-ordú bainistíochta: DJadmin: dumpdata le hainmneacha samhail aonair mar argóintí anois, rud a ligeann duit na sonraí a onnmhairiú díreach ó mhúnlaí áirithe.

  • Tá scagaire teimpléad nua: tfilter: safeseq ann a oibríonn díreach cosúil:tfilter: sábháilte le haghaidh liostaí, ag marcáil gach mír sa liosta mar shábháilte.

  • Cache backends now support incr() and decr() commands to increment and decrement the value of a cache key. On cache backends that support atomic increment/decrement -- most notably, the memcached backend -- these operations will be atomic, and quite fast.

  • Is féidir le Django anois:doc: fíordheimhniú a tharmligean go héasca chuig an bhfreastalaí gréasán' trí chúltaca fíordheimhnithe nua a thacaíonn leis an athróg comhshaoil caighdeánach `REMOTE_USER </howto/auth-remote-user> a úsáidtear chun na críche seo.

  • Tá feidhm nua:func: django.shortcuts.redirect ann a fhágann go bhfuil sé níos éasca athatreoruithe a eisiúint mar gheall ar réad, ainm amharc, nó URL.

  • <postgresql-notes>Tacaíonn an cúltaca postgresql_psycopg2 anois:ref: autocommit PostgreSQL dúchas. Is gné chun cinn é seo, atá sonrach le PostgreSQL, ar féidir leis feidhmchláir áirithe troma léitheoireachta a dhéanamh níos gasta.

Cad atá romhainn?Link to this heading

Glacfaimid sos gairid, agus ansin tosóidh an obair ar Django 1.2 - gan aon scíth do dhaoine atá tuirseach! Más mian leat cabhrú, bíonn plé ar fhorbairt Django, lena n-áirítear dul chun cinn i dtreo an eisiúint 1.2, ar an liosta seoltaí django-developers agus sa chainéal IRC #django -dev ar irc.libera.chat`. Bíodh leisce ort páirt a ghlacadh sna plé!

Cuimsíonn cáipéisíocht ar líne Django leideanna freisin maidir le conas cur le Django:

Fáiltítear i gcónaí roimh ranníocaíochtaí ar aon leibhéal – cód a fhorbairt, doiciméadú a scríobh nó ticéid a thriaisteáil agus cabhrú le ceartúcháin bheartaithe a thástáil – agus is mór againn i gcónaí iad.

Agus sin an bealach atá sé.