Nótaí scaoileadh Django 1.3Link to this heading

23 Márta, 2011

Fáilte go dtí Django 1.3!

Beagnach bliain ag déanamh, cuimsíonn Django 1.3 beagán go leor: ref: `gnéithe nua' agus neart socruithe fabht agus fe <whats-new-1.3>abhsúcháin ar ghnéithe atá ann cheana. Clúdaíonn na nótaí scaoilte seo na gnéithe nua i 1.3, chomh maith le roinnt: ref: `athruithe neamh-chomhoiriúnacha <backwards-incompatible-changes-1.3>'a mbeidh tú ag iarraidh a bheith ar an eolas fúthu agus tú ag uasghrádú ó Django 1.2 nó leaganacha níos sine.

ForbhreathnúLink to this heading

Bhí fócas Django 1.3 den chuid is mó ar iarratais gné níos lú fadtéarmach a réiteach, ach níor chuir sé sin cosc ar chúpla gné nua réasúnta suntasach ó thúrlann, lena n-áirítear:

  • Creat chun 'tuairimí rangbhunaithe '_ a scríobh.

  • Tacaíocht ionsuite chun `saoráidí logála Python a úsáid `_.

  • Tacaíocht Contrib do `láimhseáil éasca comhaid statacha `_.

  • Tacaíonn creat tástála Django anois le “leabharlann unittest2” (agus seolann sé le cóip de).

Cibé áit is féidir, tugtar gnéithe nua isteach ar bhealach atá comhoiriúnach le cúl: doc: 'ár mbeartas cobhsaíochta API</misc/api-stability> '. <deprecated-features-1.3>Mar thoradh ar an mbeartas seo, dtosaíonn Django 1.3:ref: `an próiseas díghabhála do roinnt gnéithe `.

Comhoiriúnacht PythonLink to this heading

Bhí scaoileadh Django 1.2 suntasach as an chéad athrú a bheith aige i mbeartas comhoiriúnachta Python Django; roimh Django 1.2, thacaigh Django le haon leagan 2.x de Python ó 2.3 suas. Amhail Django 1.2, ardaíodh an riachtanas íosta go Python 2.4.

Leanann Django 1.3 ag tacú le Python 2.4, ach is é an tsraith scaoileadh Django deiridh é sin a dhéanamh; ag tosú le Django 1.4, is é 2.5 an leagan Python íosta a thacaítear. Foilseofar doiciméad ina leagtar amach ár n-amlíne iomlán chun Python 2.x a dhíspreagadh agus bogadh go Python 3.x go gairid tar éis Django 1.3 a scaoileadh.

Cad atá nua i Django 1.3Link to this heading

Tuairimí rang-bhunaitheLink to this heading

Cuireann Django 1.3 creat leis a ligeann duit rang a úsáid mar radharc. Ciallaíonn sé seo gur féidir leat radharc a chumadh as bailiúchán modhanna is féidir iad a fho-aicmiú agus a shárú chun tuairimí coitianta ar shonraí a sholáthar gan an iomarca cód a scríobh.

Cuireadh analógacha de na sean-radhairc chineálacha bunaithe ar fheidhm ar fáil, mar aon le rang bonn radharc go hiomlán cineálach is féidir a úsáid mar bhunús d'iarratais in-athúsáidte is féidir a leathnú go héasca.

See the documentation on class-based generic views for more details. There is also a document to help you convert your function-based generic views to class-based views.

LogáilLink to this heading

Django 1.3 adds framework-level support for Python's logging module. This means you can now easily configure and control logging as part of your Django project. A number of logging handlers and logging calls have been added to Django's own code as well -- most notably, the error emails sent on an HTTP 500 server error are now handled as a logging activity. See the documentation on Django's logging interface for more details.

Láimhseáil comhaid statacha sínteLink to this heading

Seolann Django 1.3 le aip contrib nua - django.contrib.staticfiles - chun cabhrú le forbróirí na comhaid meán statacha (íomhánna, CSS, JavaScript, srl.) atá riachtanach chun leathanach gréasáin iomlán a láimhseáil.

I leaganacha roimhe seo de Django, bhí sé coitianta sócmhainní statacha a chur in:setting: MEDIA_ROOT mar aon le comhaid uaslódáilte ón úsáideoir, agus iad araon a sheirbheáil ag: socrú: MEDIA_URL. Cuid den chuspóir a bhaineann leis an aip staticfiles a thabhairt isteach ná é a dhéanamh níos éasca comhaid statacha a choinneáil ar leithligh ó chomhaid uaslódáilte ón úsáideoir. Ba chóir sócmhainní statacha dul anois i bhfo-eolairí statach/` d'aipeanna nó in eolairí sócmhainní statacha eile atá liostaithe in:setting: STATICFILES_DIRS, agus seirbheálfar iad ag: socrú: STATIC_URL.

Féach na:doc: doiciméadú tagartha an aipe le haghaidh tuilleadh sonraí nó fo</ref/contrib/staticfiles> ghlaim conas:doc: `comhaid statacha a bhainistiú </howto/static-files/index> '.

Tacaíocht unittest2Link to this heading

Thug Python 2.7 roinnt athruithe móra isteach ar an leabharlann ``unittest ``, ag cur roinnt gnéithe thar a bheith úsáideach leis. Chun a chinntiú gur féidir le gach tionscadal Django leas a bhaint as na gnéithe nua seo, seolann Django cóip de:pypi: unittest2, cóip de leabharlann Python 2.7 unittest `, cúltaca le haghaidh comhoiriúnacht Python 2.4.

Chun rochtain a fháil ar an leabharlann seo, soláthraíonn Django ailias modúl django.utils.unittest. Má tá Python 2.7 á úsáid agat, nó má tá unittest2` suiteáilte agat go háitiúil, déanfaidh Django an t-ainm a mhapáil chuig an leagan suiteáilte den leabharlann unittest. Seachas sin, úsáidfidh Django a leagan cuacail féin de ``unittest2`.

Chun leas a bhaint as an ailias seo, bain úsáid as:

Code
from django.utils import unittest

cibé áit a bheadh úsáid agat go stairiúil:

Code
import unittest

Más mian leat leanúint ar aghaidh ag úsáid an leabharlann “unittest” bonn, is féidir leat - ní gheobhaidh tú aon cheann de na gnéithe deasa nua ``unittest2`.

Bainisteoirí comhthéacs iLink to this heading

Féadfaidh úsáideoirí Python 2.5 agus níos airde feidhmeanna bainistíochta idirbheart a úsáid anois mar bhainisteoirí comhthéacs. Mar shampla:

Code
with transaction.autocommit():
    ...

Cascade-scriosadh cumraitheLink to this heading

ForeignKey and OneToOneField now accept an on_delete argument to customize behavior when the referenced object is deleted. Previously, deletes were always cascaded; available alternatives now include set null, set default, set to any value, protect, or do nothing.

Le haghaidh tuilleadh faisnéise, féach an doiciméadach:attr: ~django.db.models.foreignkey.on_delete.

Marcóirí agus tuairimí comhthéacsúla le haghaidh teaghráin inaiLink to this heading

Maidir le teaghráin aistriúcháin a bhfuil brí débhríoch acu, is féidir leat an fheidhm pgettext` a úsáid anois chun comhthéacs an teaghráin a shonrú.

Agus mura dteastaíonn uait ach roinnt faisnéise a chur leis d'aistritheoirí, is féidir leat tráchtanna aistritheora speisialta a chur san fhoinse freisin.

Le haghaidh tuilleadh faisnéise, féach:ref: contextual-markers agus:ref: translator-comments.

Feabhsuithe ar chlib teimpléad ionsuiteLink to this heading

Rinneadh roinnt feabhsuithe ar chlibeanna teimpléad ionsuite Django:

  • Glacann an clibe:ttag: include anois le rogha ``with`,,, ag ligean duit athróga comhthéacs a shonrú don teimpléad san áireamh

  • Glacann an clibe:ttag: include anois le rogha ``amháin ``, rud a ligeann duit an comhthéacs reatha a eisiamh ón gcomhthéacs san áireamh

  • Ligeann an clibe:ttag: with duit anois ilathróga comhthéacs a shainiú i mbloc aonair: ttag: with.

  • Glacann an clibe:ttag: load anois le argóint ``ó `, rud a ligeann duit clib amháin nó scagaire a luchtú ó leabharlann.

TeimpléadFreagraLink to this heading

Uaireanta d'fhéadfadh sé a bheith tairbheach ligean do mhaisitheoirí nó earraí lárnacha freagra a mhodhnó* tar éis dó* é a thógáil ag an dearcadh. Mar shampla, b'fhéidir gur mhaith leat an teimpléad a úsáidtear a athrú, nó sonraí breise a chur sa chomhthéacs.

Mar sin féin, ní féidir leat ábhar bunús:class: ~django.http.httpResponse a mhodhnú (go héasca) tar éis é a thógáil. Chun an teorannú seo a shárú, cuireann Django 1.3 rang nua:class: ~Django.Template.Response.TemplateResponse leis. Murab ionann agus bunús:class: ~django.http.httpResponse rudaí, :class: ~Django.Template.Response.TemplateResponse coinníonn rudaí sonraí an teimpléad agus an chomhthéacs a chuir an dearcadh ar fáil chun an freagra a ríomh. Ní ríomhtar aschur deiridh an fhreagra go dtí go mbeidh sé ag teastáil, níos déanaí sa phróiseas freagartha.

Le haghaidh tuilleadh sonraí, féach ar an doiciméadúchán ar an TemplateResponse rang.

Athruithe CachingLink to this heading

Feiceann Django 1.3 tugtar isteach roinnt feabhsuithe ar bhonneagar caching an Django.

Ar dtús, tacaíonn Django anois le cúscáin ainmnithe iolracha. Ar an mbealach céanna a thug Django 1.2 tacaíocht isteach do naisc iolracha bunachar sonraí, tugann Django 1.3 deis duit an socrú nua:setting: CACHES a úsáid chun naisc taisce iolracha ainmnithe a shainiú.

<cache_key_transformation>Ar an dara dul síos, cuireadh :ref: leagan <cache_versioning>, :ref: réamhshocrú ar fud an láithreáin agus <cache_key_prefixing>:ref: `claochlú `leis an API taisce.

Ar an tríú dul síos, nuashonraí <using-vary-headers>odh :ref: cruthú eochair taiscéalaí chun an teaghrán fiosrúcháin iarratais a chur san áireamh ar iarratais GET.

Faoi dheireadh, cuireadh tacaíocht do pylibmc leis an gcúltaca taisce memcached.

Le haghaidh tuilleadh sonraí, féach an:doc: `doiciméadú maidir le caching in Django`</topics/cache>.

Ceadanna d'úsáideoirí neamhriachLink to this heading

If you provide a custom auth backend with supports_inactive_user set to True, an inactive User instance will check the backend for permissions. This is useful for further centralizing the permission handling. See the authentication docs for more details.

GeodJangoLink to this heading

<spatial-backends>Tá an tsraith tástála GeodJango san áireamh anois nuair: ref: ag rith an tsraith tástála Django `le ``runtests.py` nuair a úsáidtear: ref: <running-unit-tests>`cúltaca bunachar sonraí spásúla`.

MEDIA_URL and STATIC_URL must end in a slashLink to this heading

Roimhe seo, ní theastaigh le socrú: socrú: MEDIA_URL ach amháin má bhí iarmhír ann níos faide ná an ainm fearainn.

Tá slais leantach ag teastáil * anois * le haghaidh MEDIA_URL agus an socrú nua ::STATIC_URL chomh fada agus nach bhfuil sé bán. Cinntíonn sé seo go bhfuil bealach comhsheasmhach ann chun cosáin a chomhcheangal i dteimpléid.

Ardóidh socruithe tionscadail a sholáthraíonn ceachtar den dá shocrú gan slasc rianaithe PendingDeprecationWarning anois.

I Django 1.4 ardóidh an coinníoll céanna seo DeprecationWarning, agus i Django 1.5 ardóidh sé eisceacht ImproperlyConfigurred.

Gach rud eileLink to this heading

Django 1.1 and 1.2 added lots of big ticket items to Django, like multiple-database support, model validation, and a session-based messages framework. However, this focus on big features came at the cost of lots of smaller features.

Chun cúiteamh air seo, bhí fócas an phróisis forbartha Django 1.3 ar go leor iarratais gné níos lú, fada a chur leis. Ina measc seo tá:

  • Uirlisí feabhsaithe chun an réad reatha: class: ~django.contrib.sites.models.site a rochtain agus a ionramháil in:doc: creat </ref/contrib/sites> na láithreáin ghréamh.

  • A: Aicme: ~ Django.Test.RequestFactory chun iarratais a mheaitseáil i dtástálacha.

  • Dearbhú tástála nua --:meth: ~django.test.transactionTestCase.assertNumqueries - rud a fhágann go bhfuil sé níos éasca gníomhaíocht an bhunachar sonraí a bhaineann le radharc a thástáil.

  • Tacaíocht do chuardaigh a chuimsíonn caidreamh i admin 's:attr: ~django.contrib.admin.modeladmin.list_filter.

  • Tacaíocht do fhianáin HTTPOnly.

  • mail_admins() and mail_managers() now support easily attaching HTML content to messages.

  • EmailMessage now supports CC's.

  • Áiríonn ríomhphoist earráide anois níos mó sonraí agus formáidiú leathanach earráide an fhreastalaí dífhabhtaithe.

  • simple_tag() now accepts a takes_context argument, making it easier to write simple template tags that require access to template context.

  • A new render() shortcut -- an alternative to django.shortcuts.render_to_response() providing a RequestContext by default.

  • Tacaíocht chun: aicme: abairtí F `a chomhcheangal le luachanna <django.db.models.F>`timedelta` agus luachanna bunachar sonraí á aisghabháil nó ag nuashonrú.

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

Baineann bailíochtú CSRF anois le hiarratais AJAXLink to this heading

Roimh Django 1.2.5, dhíolmhaigh córas cosc CSRF Django iarratais AJAX ó fhíorú CSRF; mar gheall ar saincheisteanna slándála a thuairiscíodh dúinn, áfach, * uil* iarratais faoi réir fíorú CSRF anois. Téigh i gcomhairl:doc: an doiciméadú Django CSRF le haghaidh sonraí maidir le conas fíorú CSRF a láim</ref/csrf> hseáil in iarratais AJAX.

Scagairí srianta i gcomhéadan adminLink to this heading

Roimh Django 1.2.5, cheadaigh comhéadan riaracháin Django scagadh ar aon réimse samhail nó gaol - ní amháin iad siúd a shonraítear i “list_filter” - trí ionramháil sreangán fiosrúcháin. Mar gheall ar shaincheisteanna slándála a tuairiscíodh dúinn, áfach, ní mór argóintí cuardaigh sreangán fiosrúcháin sa riarachán a bheith le haghaidh réimsí nó caidrimh a shonraítear i list_filterdate_hierarchy.

Ní scriosann tú samhail comhaid ghaolmharaLink to this heading

I leaganacha Django níos luaithe, nuair a scriosadh samhail samhail ina raibh a:class: ~django.db.models.filefield, ghlac: :class: ~django.db.models.filefield leis an gcomhad a scriosadh ón stóráil cúltaca freisin. D'oscail sé seo an doras do roinnt cásanna caillteanais sonraí, lena n-áirítear idirbhearta rollta siar agus réimsí ar mhúnlaí éagsúla ag tagairt don chomhad céanna. I Django 1.3, nuair a scriostar samhail ní ghlaofar modh ``delete () ``ag: class: `~Django.db.Models.FileField. Más gá duit comhaid dílleachta a ghlanadh, beidh ort é a láimhseáil tú féin (mar shampla, le ordú bainistíochta saincheaptha is féidir a reáchtáil de láimh nó a sceidealú le rith go tréimhsiúil trí e.g. cron).

PasswordIompar rindreála réamhshocraithe Cuir isteachLink to this heading

Glacann an giuirléid fhoirme:class: ~django.forms.passwordInput, atá beartaithe le húsáid le réimsí foirme a léiríonn pasfhocail, le hargóint eochairfhocal boolean render_value a léiríonn an gcuid sonraí a sheoladh ar ais chuig an mbrabhsálaí nuair a thaispeántar foirm le hearráidí. Roimh Django 1.3, réamhshocraigh an argóint seo go “True”, rud a chiallaíonn go gcuirfí an pasfhocal curtha isteach ar ais chuig an mbrabhsálaí mar chuid den fhoirm. D'fhéadfadh forbróirí a raibh siad ag iarraidh beagán slándála breise a chur leis tríd an luach sin a eisiamh ón bhfoirm athléirithe a:: class: ~django.forms.passwordInput ag dul Render_Value=False.

Mar gheall ar nádúr íogair na bhpasfhocail, áfach, glacann Django 1.3 an chéim seo go huathoibríoch; is é “False” anois luach réamhshocraithe render_value, agus ní mór d'fhorbróirí atá ag iarraidh an luach pasfhocal a thabhairt ar ais chuig an bhbrabhsálaí ar aighneacht le hearráidí (an t-iompar roimhe seo) anois. Mar shampla:

Code
class LoginForm(forms.Form):
    username = forms.CharField(max_length=100)
    password = forms.CharField(widget=forms.PasswordInput(render_value=True))

Giuirléid réamhshocraithe inghlanaithe do FileFieldLink to this heading

Cuimsíonn Django 1.3 anois a: class: ~django.forms.clearaableFileInput giuirléid fhoirme i dteann:class: ~django.forms.fileInput. Tugann ClearableFileInput bosca seiceála chun luach an réimse a ghlanadh (mura bhfuil luach ag an réimse agus mura bhfuil sé riachtanach); ní sholáthraíodh FileInput` aon bhealach chun comhad atá ann cheana a ghlanadh ó fileField.

Is é ClearableFileInput an giuirléid réamhshocraithe anois do FileField`, mar sin caithfidh foirmeacha atá ann cheana lena n-áirítear FileField gan giuirléid saincheaptha a shannadh cuntas a thabhairt ar an mbosca seiceála breise féideartha san aschur foirme rindreáilte.

Chun filleadh ar an rindreáil roimhe seo (gan an cumas an FileField a ghlanadh), bain úsáid as an giuirléid FileInput in ionad ClearableFileInput. Mar shampla, i Modelfhoirme` do mhúnla hipitéiseach Doiciméad le FileField` darb ainm doiciméad:

Code
from django import forms
from myapp.models import Document


class DocumentForm(forms.ModelForm):
    class Meta:
        model = Document
        widgets = {"document": forms.FileInput}

Innéacs nua ar thábla seisiún bunachar sonraíLink to this heading

Roimh Django 1.3, ní raibh aon innéacs ag an tábla bunachar sonraí a úsáideann cúltaca an bhunachar sonraí don aip: doc: seisiús ar an gcolún expire_date </topics/http/sessions>. Mar thoradh air sin, bheadh ceisteanna dáta-bhunaithe ar an tábla seisiúin - mar an cheist atá ag teastáil chun sean-sheisiúin a ghlanadh - an-mhall dá mbeadh go leor seisiúin ann.

Má tá tionscadal ann cheana agat atá ag úsáid cúltaca seisiúin bunachar sonraí, ní gá duit aon rud a dhéanamh chun freastal ar an athrú seo. Mar sin féin, b'fhéidir go bhfaighidh tú borradh suntasach feidhmíochta má chuireann tú an t-innéacs nua de láimh leis an tábla seisiúin. Is féidir an SQL a chuirfidh an t-innéacs a fháil tríd an ordú riaracháin sqlindexes` a reáchtáil:

Shell
python manage.py sqlindexes sessions

Níl níos mó focail dhánnaLink to this heading

Chuir Django liosta de bhróbanna ar fáil (agus a fhorfheidhmiú) go stairiúil. Chuir an aip tráchtanna an liosta seo de bhráchtanna i bhfeidhm, ag cosc ar dhaoine tuairimí a chur isteach ina raibh ceann de na díobhálacha sin.

Ar an drochuair, bhí an teicníc a úsáidtear chun an liosta dochtúireachtaí seo a chur i bhfeidhm go hiomlán, agus seans go mbeadh an “fadhb Scunthorpe” _ ann. Bheadh iarracht shuntasach ag teastáil leis an scagaire ionsuite a fheabhsú chun an fhadhb seo a shocrú, agus ós rud é nach é próiseáil teanga nádúrtha gnáthfhearann chreat gréasáin, tá an fhadhb “socraithe” againn trí liosta folamh a dhéanamh ar liosta na bhfocal toirmiscthe.

Más mian leat an sean-iompar a chur ar ais, ní gá ach socrú PROFANITIES_LIST a chur i do chomhad socruithe a chuimsíonn na focail ar mhaith leat a thoirmeasc (féach na:commit: `commit: `commit a chuir an t-athrú seo i bhfeidhm <edd767d2612d891a906268cf590571f541dd164f>`más mian leat an liosta focal a fheiceáil a bhí toirmiscthe go stairiúil). Mar sin féin, má tá sé tábhachtach duit dífhabhachtaí a sheachaint, mholfaí duit cur chuige níos fearr, chomh naif a lorg maidir leis an bhfadhb.

Athruithe LocalflavourLink to this heading

Tugann Django 1.3 na hathruithe seo a leanas isteach ar bhlasanna áitiúla nach bhfuil comhoiriúnach ar gcúl:

  • Ceanada (ca) - Tá a chód cúige nuashonraithe go “NL” sa chúige “Newfoundland and Labrador”, seachas an “NF” níos sine. Ina theannta sin, tá a chód cúige ceartaithe ag Críoch Yukon go “YT”, in ionad “YK”.

  • An Indinéis (id) - Baineadh an cúige “Nanggroe Aceh Darussalam (NAD)” as liosta na gcúige i bhfabhar an ainmniú oifigiúil nua “Aceh (ACE)”.

  • Stáit Aontaithe Mheiriceá (US) - Leathnaigh liosta na “stáit” a úsáideann UsStatefield` chun cóid poist na bhFórsaí Armtha a áireamh. seo comhoiriúnach ar chúl bhí ag brath ar ``UsStateField gan iad san áireamh.

Nuashonruithe FormSetLink to this heading

I Django 1.3 athraítear iompar cruthaithe FormSet ``beagán. Go stairiúil níor rinne an rang idirdhealú idir gan sonraí a rith agus foclóir folamh a rith. Bhí seo neamhréidh le hiompar i gcodanna eile den chreat. Ag tosú le 1.3 théann i bhfoclóir folamh ardóidh an ``FormSet ValidationError.

Mar shampla le FormSet:

Python console
>>> class ArticleForm(Form):
...     title = CharField()
...     pub_date = DateField()
...
>>> ArticleFormSet = formset_factory(ArticleForm)

ardóidh an cód seo a leanas Error Validation:

Python console
>>> ArticleFormSet({})
Traceback (most recent call last):
...
ValidationError: [u'ManagementForm data is missing or has been tampered with']

más gá duit FormSet folamh a chur isteach, ná cuir isteach sna sonraí nó bain úsáid as None:

Python console
>>> formset = ArticleFormSet()
>>> formset = ArticleFormSet(data=None)

Glaonna i dteimpléidLink to this heading

Roimhe seo, ní ghlaofaí glaoch inghlaonta i dteimpléad go huathoibríoch mar chuid den phróiseas réitigh athraitheach ach dá n-aisghairfí é trí chuardach tréithe. Neamhréireacht a bhí ann a d'fhéadfadh iompar mearbhall agus neamhchabhrach a bheith mar thoradh air:

Python console
>>> Template("{{ user.get_full_name }}").render(Context({"user": user}))
u'Joe Bloggs'
>>> Template("{{ full_name }}").render(Context({"full_name": user.get_full_name}))
u'&lt;bound method User.get_full_name of &lt;...

Tá sé seo réitithe i Django 1.3 - is é U'Joe Bloggs'` an toradh sa dá chás. Cé nach raibh an t-iompar roimhe seo úsáideach do theanga teimpléid a dearthaíodh do dhearthóirí gréasáin, agus nár tacaíodh d'aon ghnó riamh, is féidir go bhféadfadh roinnt teimpléid a bhriseadh leis an athrú seo.

Úsáid SQL saincheaptha chun sonraí tosaigh a luchtú i dtástálachaLink to this heading

Soláthraíonn Django crúcaí SQL saincheaptha mar bhealach chun SQL lámhdhéanta a instealladh isteach sa phróiseas sioncrónaithe bunachar sonraí Ceann de na húsáidí féideartha don SQL saincheaptha seo ná sonraí a chur isteach i do bhunachar sonraí. Má tá ráitis INSERT i do SQL saincheaptha, déanfar na cuireadh isteach sin gach uair a dhéanfar do bhunachar sonraí a shioncronú. Áirítear leis seo sioncrónú aon bhunachar sonraí tástála a chruthaítear nuair a reáchtáil tú sraith tástála.

Mar sin féin, sa phróiseas chun an Django 1.3 a thástáil, fuarthas amach nár oibrigh an ghné seo riamh go hiomlán mar a fógraíodh. Agus cúltaca bunachar sonraí á úsáid nach dtacaíonn le hidirbhearta, nó nuair a bhíonn TransactionTestCase á úsáid agat, ní bheidh sonraí a cuireadh isteach ag úsáid SQL saincheaptha le feiceáil le linn an phróisis tástála.

Ar an drochuair, ní raibh aon bhealach ann chun an fhadhb seo a cheartú gan neamhoiriúnacht ar ais a thabhairt isteach. Seachas sonraí tosaigh a cuireadh isteach ag SQL a fhágáil i stát neamhchinnte, cuireann Django i bhfeidhm anois an beartas nach mbeidh sonraí a cuireadh isteach ag SQL saincheaptaí* le feiceáil le linn na tástála.

Ní théann an t-athrú seo ach ar an bpróiseas tástála Is féidir leat SQL saincheaptha a úsáid fós chun sonraí a luchtú isteach i do bhunachar sonraí táirgeachta mar chuid den phróiseas syncdb. Má theastaíonn uait go mbeidh sonraí ann le linn coinníollacha tástála, ba cheart duit iad a chur isteach ag baint úsáide as: ref: daingneáin tástá <topics-testing-fixtures>la `, nó ag baint úsáide as an modh ``Setup () de do cháis tástála.

Tosaíocht athraithe ar luchtú aistriúLink to this heading

Tá obair déanta chun an t-algartam a úsáideann Django ag am rite a shimpliú, a chuíchóiriú agus a dhoiciméadú i gceart chun aistriúcháin a chruthú ó na haistriúcháin éagsúla a fhaightear ar diosca, mar atá:

Maidir le litríochtaí inaistrithe a fhaightear i gcód Python agus teimpléid (fearann gettext `django'):

  • Athraíodh tosaíochtaí na n-aistriúcháin san áireamh le feidhmchláir atá liostaithe sa socrú: INSTALLED_APPS. Chun iompar a sholáthar atá comhsheasmhach le codanna eile de Django a úsáideann socrú den sórt sin (teimpléid, srl.) Anois, agus an t-aistriúchán a chuirfear ar fáil á dtógáil, tá tosaíocht níos airde ag na feidhmchláir atá liostaithe ar dtús ná na cinn atá liostaithe níos déanaí.

  • Anois is féidir na haistriúcháin a sheoltar le feidhmchláir a shárú trí úsáid a bhaint as an socrú LOCALE_PATHS a bhfuil tosaíocht níos airde anois ag a n-aistriúcháin ná na haistriúcháin ar fheidhmchláir INSTALLED_APPS. Athraíodh an tosaíocht choibhneasta i measc na luachanna atá liostaithe sa socrú seo freisin ionas go mbeidh tosaíocht níos airde ag na cosáin a liostaítear ar dtús ná na cinn a liostaítear níos déanaí.

  • Tá fo-eolaire ``áitiúil ``den eolaire ina bhfuil na socruithe, a théann i gcomhthráth leis agus ar a dtugtar an *stiúrthóireacht tionscadaile* de ghnáth á ndíchur san eisiúint seo mar fhoinse aistriúcháin. (tá tosaíocht na n-aistriúcháin seo idirmheánach idir iarratais agus:setting: `LOCALE_PATHS aistriúcháin). Féach ar an rannán gnéithe luasghabháilte comhfhreagr den doiciméad seo.

Maidir le litríochtaí inaistrithe a fhaightear i gcód JavaScript (fearann djangojs' gettext):

  • Mar an gcéanna leis na haistriúcháin fearainn 'django': Is féidir aistriúcháin a sheoltar le feidhmchláir a shárú trí úsáid a bhaint as an socrú LOCALE_PATHS don fhearann ​​seo freisin. Tá tosaíocht níos airde ag na haistriúcháin seo ná na haistriúcháin ar phacáistí Python a cuireadh ar aghaidh chuig an radharc javascript_catalog(). Tá tosaíocht níos airde ag na cosáin a liostaítear ar dtús ná na cinn a liostaítear níos déanaí.

  • Níor cuireadh aistriúcháin faoi fho-eolaire ``áitiúil ``den stiúrthóir tionscadal san áireamh riamh le haghaidh aistriúcháin JavaScript agus fanann siad sa chás céanna ag smaoineamh ar an suíomh sin a dhíscaoileadh.

Bainistíocht idirbheartLink to this heading

Agus idirbhearta bainistithe á úsáid agat - is é sin, rud ar bith ach an modh réamhshocraithe uathchomhartha - tá sé tábhachtach nuair a bhíonn idirbheart marcáilte mar “salach”. Déanann an maisitheoir commit_on_success nó an django.middleware.transaction.transactionMiddleware idirbhearta salacha, agus cuireann commit_manually iallach orthu a dhúnadh go sainráite; idirbhearta glan “faigheann pas”, rud a chiallaíonn go ndéantar iad a rolladh ar ais ag deireadh iarratais nuair a dhúntar an nasc.

Go dtí Django 1.3, ní mharcáladh idirbhearta salach ach nuair a bhí Django ar an eolas faoi oibríocht mhodhnaithe a rinneadh iontu; is é sin, sábháladh samhail éigin, rinneadh roinnt nuashonrú nó scriosadh mórchóir, nó tugtar go sainráite ar an úsáideoir ``transaction.set_dirty () `. I Django 1.3, déantar idirbheart salach a mharcáil nuair a dhéantar oibríocht bunachar sonraí aon n.

Mar thoradh ar an athrú seo, ní gá duit idirbheart salach a shocrú go sainráite a thuilleadh nuair a fhorghníomhaíonn tú SQL amh nó nuair a úsáideann tú “SELECT” a mhodhnú sonraí. Mar sin féin, ní mór duit* aon idirbhearta léite amháin atá á bhainistiú ag baint úsáide as `commit_manual () `a dhúnadh go sainráite. Mar shampla:

Code
@transaction.commit_manually
def my_view(request, name):
    obj = get_object_or_404(MyObject, name__iexact=name)
    return render_to_response("template", {"object": obj})

Roimh Django 1.3, oibreodh sé seo gan earráid. Mar sin féin, faoi Django 1.3, ardóidh sé seo a:class: ~django.db.transaction.transactionManagementError toisc go bhfágann an oibríocht léite a aisghabhann an cás Myobject an idirbheart i stát salach.

Gan athshocrú pasfhocal d'úsáideoirí neamhghníLink to this heading

Roimh Django 1.3, bhí úsáideoirí neamhghníomhacha in ann ríomhphost athshocraithe pasfhocal a iarraidh agus a bhfocal faire a athshocrú. I Django 1.3 gheobhaidh úsáideoirí neamhghníomhacha an teachtaireacht chéanna le cuntas nach bhfuil ann.

Glacann amharc athshocraithe pasfhocal anois le from_emailLink to this heading

Glacann an radharc django.contrib.auth.views.password_reset () ``anois le paraiméadar ``from_email, a chuirtear chuig modh save () ``password_reset_form mar argóint eochairfhocal. Má tá an dearcadh seo á úsáid agat le foirm athshocraithe pasfhocal saincheaptha, ansin beidh ort a chinntiú go nglacann modh ``save () `d'fhoirm leis an argóint eochairfhocal seo.

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

Déanann Django 1.3 roinnt gnéithe a dhíspreagadh ó 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.3. 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-Wall.

I Django 1.4, beidh na rabhaidh seo ina DeprecationWarning`, ar* níl* ciúin. I Django 1.5 bainfear tacaíocht do na gnéithe seo go hiomlán.

Tacaíocht mod_pythonLink to this heading

Níl scaoileadh ag an leabharlann mod_python` ó 2007 ná tiomantas ó 2008. Vótáil bord Fondúireachta Apache mod_python a bhaint as an tsraith tionscadal gníomhacha ina stórais rialaithe leaganacha, agus tá a phríomhfhorbróir tar éis a chuid iarrachtaí go léir a aistriú i dtreo an cúltaca mod_wsgi níos éadroime, níos cobhsaí agus níos solúbtha.

Má tá an láimhseálaí iarratais mod_python` á úsáid agat faoi láthair, ba cheart duit do thionscadail Django a athúsáid ag baint úsáide as láimhseálaí iarratais eile. :doc: Is é mod_wsgi an láimhseálaí iarrat</howto/deployment/wsgi/modwsgi> ais a mhol tionscadal Django, ach tacaítear le FastCGI freisin. Bainfear tacaíocht d'imscaradh mod_python` i Django 1.5.

Tuairimí cineálacha ar fheidhmLink to this heading

Mar thoradh ar tuairimí cineálacha aicmbunaithe a thabhairt isteach, tá na tuairimí cineálacha bunaithe ar fheidhm a sholáthraíonn Django a chuir isteach. Rinneadh na modúil seo a leanas agus na tuairimí atá iontu a dhíchur:

  • django.views.generic.create_nuashonraithe

  • django.views.generic.date_based

  • ``django.views.generic.list_details ``

  • django.views.generic.simpl

Tástáil freagra cliant ``teimpléad` tréithLink to this heading

Tugann :tag:`cliant tástála <test-client>` ag Django ar ais Response réada anótáilte le faisnéis tástála breise. I leaganacha Django roimh 1.3, chuimsigh sé seo aitreabúid teimpléad ina raibh faisnéis faoi theimpléid a tugadh chun an freagra a ghiniúint: ceachtar Dada, réad Template amháin, nó liosta de :class :~django.template.Template réada. Mar gheall ar an neamhréireacht seo sna luachanna tuairisceáin (uaireanta liosta, uaireanta ní raibh) ba dheacair oibriú leis an tréith.

I Django 1.3 tá an tréith template a dhíchur i bhfabhar nua:attr: ~django.test.response.templates tréith, atá i gcónaí ina liosta, fiú mura bhfuil ach eilimint amháin nó gan aon eilimintí aige.

DjangotestrunnerLink to this heading

Mar thoradh ar thacaíocht a thabhairt isteach do unittest2, rinneadh gnéithe Django.Test.Simple.DjangoTestRunner (lena n-áirítear foirceannadh tástála teip tapa agus Ctrl-C) iomarcach. Mar gheall ar an iomarcaíocht seo, rinneadh Djangotestrunner a iompú ina rang sealbhóra áit folamh, agus bainfear é go hiomlán i Django 1.5.

Athruithe ar url ``agus ``ssiLink to this heading

Ligfidh an chuid is mó de na clibeanna teimpléad duit comhsheasmhainní nó athróga a rith isteach mar argóintí - mar shampla:

Django template
{% extends "base.html" %}

ligeann duit teimpléad bonn a shonrú mar thairiseach, ach má tá athróg comhthéacs agat templ ina bhfuil an luach base.html:

Django template
{% extends templ %}

tá sé dlíthiúil freisin.

Mar gheall ar thimpiste staire, áfach, tá an url ``agus `ssi` difriúil. Úsáideann na clibeanna seo an dara comhréir gan chóta, ach léirmhíníonn an argóint mar thrasuach. Ciallaíonn sé seo nach féidir athróg comhthéacs a úsáid mar sprioc chlib url ``agus `ssi.

Marcann Django 1.3 tús an phróisis chun an timpiste stairiúil seo a cheartú. Cuireann Django 1.3 leabharlann teimpléad nua leis - todhcha - a sholáthraíonn cur i bhfeidhm malartacha ar na clibeanna teimpléad url ``agus `ssi. Cuireann an leabharlann “todhchaí” seo iompar i bhfeidhm a fhágann go bhfuil láimhseáil an chéad argóint comhsheasmhach le láimhseáil gach athróg eile. Mar sin, teimpléad atá ann cheana ina bhfuil:

Django template
{% url sample %}

ba chóir iad a chur in ionad:

Django template
{% load url from future %}
{% url 'sample' %}

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

Athruithe ar na modhanna logála isteach an riaracháinLink to this heading

Sa leagan roimhe seo shainigh an aip riaracháin modhanna logála isteach in áiteanna éagsúla agus rinne sé neamhaird ar an gcur i bhfeidhm beagnach comhionann san aip auth Ba é fo-éifeacht a bhaineann leis an dúbailt seo ná glacadh in easnamh na hathruithe a rinneadh in:commit: `r12634 <c8015052d935a99a5c8f96434b2d0cd16d8a4e14>`chun tacú le tacú le sraith carachtair níos leithne d'ainmneacha úsáideora.

Athraíonn an scaoileadh seo meicníocht logála isteach an riaracháin chun fo-aicme den: class: ~django.contrib.auth.forms.AuthenticationForm a úsáid in ionad bailíochtú foirme láimhe. Baineadh an modh neamhdhoiciméadaithe roimhe seo Django.contrib.admin.sites.adminsite.display_login_form' i bhfabhar tréith nua:attr: ~django.contrib.admin.admin.adminsite.login_form.

Orduithe bainistíochta reset agus sqlreset `Link to this heading

Tá na horduithe sin díscríofa. Is féidir na horduithe flush ``agus `sqlflush a úsáid chun gach rud a scriosadh. Is féidir leat ráitis ALTER TABLE nó DROP TABLE a úsáid de láimh freisin.

GeodJangoLink to this heading

  • Rinneadh an feidhm-bhunaithe:setting: TEST_RUNNER a úsáideadh roimhe seo chun an tsraith tástála GeodJango a fhorghníomhú, django.contrib.gis.tests.run_gis_tests, cuirtear as an riteoir rang-bhunaithe, Django.contrib.gis.tests.geodjangoTestSuiterunner`.

  • Previously, calling transform() would silently do nothing when GDAL wasn't available. Now, a GEOSException is properly raised to indicate possible faulty application code. A warning is now raised if transform() is called when the SRID of the geometry is less than 0 or None.

CZBirthNumberField.CleanLink to this heading

Roimhe seo ghlac modh ``glan () ``réimse seo leis an dara argóint inscne, a cheadaigh seiceálacha bailíochtaithe níos láidre a dhéanamh, ach ós rud é nach bhféadfaí an argóint seo a rith riamh ón innealra foirme Django tá sé ar feitheamh ar dhíscaoileadh.

CompatCookieLink to this heading

Roimhe seo, nocht django.http aicme CompatCookie neamhdhoiciméadaithe, a bhí ina fillteán bugfix timpeall an leabharlainne caighdeánach Simplecookie. De réir mar a bhíonn na socruithe ag gluaiseacht suas an sruth, tá sé seo níos luaithe anois - ba cheart duit ``from django.http allmhairiú SimpleCookie ``a úsáid ina ionad.

Aistriúcháin*leibhéal tionscadla* a luchtúLink to this heading

Cuireann an scaoileadh seo de Django tús leis an bpróiseas díréitithe chun aistriúcháin atá lonnaithe faoin mbealán* tionscadail mar a thugtar air a chuimsiú sa phróiseas tógála aistriúchá Is féidir an socrú: SETTING: LOCALE_PATHS a úsáid don tasc céanna trí chonair an chórais chomhaid a chur le eolaire locale ina bhfuil aistriúcháin ar leibhéal tionscadail chuig luach an socraithe sin.

Réasúnaíocht don chinneadh seo:

  • Is coincheap sainithe go scaoilte a bhí san bealach tionscadal i gcónaí (i ndáiríre, is é an t-eolaire a úsáidtear chun aistriúcháin ar leibhéal tionscadail a aimsiú an eolaire ina bhfuil an modúl socruithe ann) agus tá athrú ann i gcodanna eile den chreat chun stop a úsáid mar thagairt do shuíomh sócmhainní ag rith.

  • Is gnách go dteipeann ar an bhfo-eolaire ``áitiúil ``a bhrath nuair a bhíonn an cás imscartha níos casta ná an ceann bunúsach. m.sh. teipeann air nuair is eolaire é an modúl socruithe (ticéad #10765).

  • Tá fadhbanna aisteach forbartha agus ama imscartha ann mar an bhfíric gur féidir leis an subdir project_dir/locale/ teachtaireachtaí earráide bréige a ghiniúint nuair a chuirtear eolaire an tionscadail le cosán Python (`manage.py runserver ``déanann é seo) agus ansin comhraíonn sé leis an modúl leabharlainne caighdeánach, is teachtaireacht rabhaidh tipiciúil é seo:

    Pytb
    /usr/lib/python2.6/gettext.py:49: ImportWarning: Not importing directory '/path/to/project/locale': missing __init__.py.
    import locale, copy, os, re, struct, sys
    
  • Níor cuireadh an suíomh seo san áireamh sa phróiseas tógála aistriúcháin do litríochtaí JavaScript. Cuireann an diúltú seo deireadh leis an míchomhsheasmhacht sin.

PermWrapper bogadh chuig django.contrib.auth.context_processorsLink to this heading

I Django 1.2, thosaíomar an próiseas chun suíomh an phróiseálaí comhthéacs auth a athrú ó django.core.context_processors go django.contrib.auth.context_processors`. Mar sin féin, fágadh an rang tacaíochta PermWrapper` ón imirce sin faoi dhearmad. I Django 1.3, aistríodh an rang PermWrapper chuig django.contrib.auth.context_processors, chomh maith leis an rang tacaíochta PermlookUpdict`. Tá na ranganna nua comhionann go feidhmiúil lena seanleaganacha; níor athraigh ach suíomh an mhodúil.

“XMLField” a bhaintLink to this heading

Nuair a scaoileadh Django den chéad uair, chuimsíonn Django XMLField a rinne bailíochtú XML uathoibríoch d'aon ionchur réimse. Mar sin féin, níor rinneadh an fheidhm bailíochtaithe seo ó tugadh isteach newforms`, roimh an scaoileadh 1.0. Mar thoradh air sin, ``XMLField mar a chuirtear i bhfeidhm faoi láthair neamh-idirdhealaithe go feidhmiúil ó shimple:class: ~django.db.models.textfield.

Ar an gcúis seo, tá Django 1.3 tar éis diúsceitheadh XMLField a rianú go tapa - in ionad dí-eisiúint dhá scaoileadh, bainfear XMLField go hiomlán i Django 1.4.

Tá sé éasca do chód a nuashonrú chun freastal ar an athrú seo - ní gá ach gach úsáid de XMLField` a chur in ionad ``Textfield`, agus bain an argóint eochairfhocal ``schema_path (má shonraítear é).