Ag obair le foirmeachaLink to this heading
Mura bhfuil tú ag pleanáil láithreáin ghréasáin agus feidhmchláir a thógáil nach ndéanann aon rud ach ábhar a fhoilsiú, agus nach nglacann sé le hionchur ó do chuairteoirí, beidh ort foirmeacha a thuiscint agus a úsáid.
Soláthraíonn Django raon uirlisí agus leabharlanna chun cabhrú leat foirmeacha a thógáil chun glacadh le hionchur ó chuairteoirí an láithreáin, agus ansin an t-ionchur a phróiseáil agus
Foirmeacha HTMLLink to this heading
<form>I HTML, is bailiúchán eilimintí é foirm taobh istigh de ``...</form> ``a ligeann do chuairteoir rudaí a dhéanamh mar téacs a iontráil, roghanna a roghnú, rudaí nó rialuithe a ionramháil, agus mar sin de, agus ansin an fhaisnéis sin a sheoladh ar ais chuig an bhfreastalaí.
Tá cuid de na heilimintí comhéadain foirme seo - ionchur téacs nó boscaí seiceála - tógtha isteach i HTML féin. Tá daoine eile i bhfad níos casta; de ghnáth úsáidfidh comhéadan a chuireann roghnóir dáta suas nó a ligeann duit sleamhnán a bhogadh nó rialuithe a ionramháil JavaScript agus CSS chomh maith le heilimintí foirme HTML <input>```chun na héifeachtaí seo a bhaint amach.
Chomh maith lena eilimintí <input>```, ní mór do fhoirm dhá rud a shonrú:
áite: an URL ar chóir na sonraí a fhreagraíonn d'ionchur an úsáideora a thabhairt ar ais
how: the HTTP method the data should be returned by
Mar shampla, tá roinnt eilimintí `sa fhoirm logála isteach do riarachán Django<input>: ceann de ``type="text" don ainm úsáideora, ceann de type="password" don phasfhocal, agus ceann de type="submit" don chnaipe “Logáil isteach”. Tá roinnt réimsí téacs i bhfolach ann freisin nach bhfeiceann an t-úsáideoir, a úsáideann Django chun a chinneadh cad atá le déanamh ina dhiaidh sin.
Insíonn sé leis an mbrabhsálaí freisin gur chóir na sonraí foirme a sheoladh chuig an URL a sh <form>onraítear sa tréith ```` ```` ```` ```` - /admin/` - agus gur chóir iad a sheoladh ag baint úsáide as an meicníocht HTTP a shonraítear leis an tréith modh - post `.
Nuair a spreagtar an eilim <input type="submit" value="Log in">int `, cuirtear na sonraí ar ais chuig ``/admin/.
GET agus ``POST ``Link to this heading
Is iad GET agus `POST ``na modhanna HTTP amháin atá le húsáid agus tú ag déileáil le foirmeacha.
Cuirtear foirm logála isteach Django ar ais ag baint úsáide as an modh POST `, ina ndéanann an brabhsálaí sonraí na bhfoirme suas, iad a ionchódú lena tharchur, seolann sé chuig an bhfreastalaí, agus ansin faigheann sé a fhreagra ar ais.
I gcodarsnacht leis sin, cuireann GET` na sonraí curtha isteach i sreang, agus úsáideann sé seo chun URL a chumadh. Tá an seoladh san URL ina gcaithfear na sonraí a sheoladh, chomh maith leis na heochracha agus na luachanna sonraí. Is féidir leat é seo a fheiceáil i ngníomh má dhéanann tú cuardach sa dhoiciméadú Django, a tháirgfidh URL den fhoirm https://docs.djangoproject.com/search/?q=forms&release=1.
Is gnách go n-úsáidtear GET` agus `POST ``chun críocha éagsúla.
Ba chóir d'aon iarratas a d'fhéadfaí a úsáid chun staid an chórais a athrú - mar shampla, iarratas a dhéanann athruithe sa bhunachar sonraí - `POST ``a úsáid. Níor chóir `GET ``a úsáid ach amháin le haghaidh iarratais nach ndéanann difear do staid an chórais.
Bheadh GET ``mí-oiriúnach freisin d'fhoirm pasfhocal, toisc go mbeadh an pasfhocal le feiceáil sa URL, agus dá bhrí sin, i stair an bhrabhsálaí agus i logaí freastalaí, go léir i dtéacs simplí. Ní bheadh sé oiriúnach do chainníochtaí móra sonraí, nó do shonraí dénártha, mar shampla íomhá. Is riosca slándála é feidhmchlár gréasáin a úsáideann iarratais `GET ``ar fhoirmeacha riaracháin: is féidir go mbeadh sé éasca d'ionsaitheoir aithris a dhéanamh ar iarratas foirme chun rochtain a fháil ar chodanna íogaire den chóras. Tugann ``POST `, in éineacht le cosaintí eile cosúil le Django: Doc: `Cosaint CSRF `níos mó smachta ar rochtain </ref/csrf/>.
Ar an láimh eile, tá GET` oiriúnach do rudaí cosúil le foirm chuardaigh gréasáin, toisc gur féidir na URLanna a léiríonn iarratas GET a leabharmharcáil, a roinnt nó a athchur isteach go héasca.
Ról Django i bhfoirmeachaLink to this heading
Is gnó casta é foirmeacha láimhseála. Smaoinigh ar riarachán Django, áit a bhféadfadh go mbeadh gá go leor míreanna sonraí de roinnt cineálacha éagsúla a ullmhú le taispeáint i bhfoirm, a léiriú mar HTML, a chur in eagar ag baint úsáide as comhéadan áisiúil, filleadh ar ais chuig an bhfreastalaí, a bhailíochtú agus a ghlanadh, agus ansin a shábháil nó
Is féidir le feidhmiúlacht fhoirme Django codanna móra den obair seo a shimpliú agus a uathoibriú, agus féadann sé é a dhéanamh níos sábháilte freisin ná mar a bheadh mórchuid na ríomhchláraitheoirí in ann a dhéanamh sa chód a sc
Láimhseálann Django trí chuid ar leith den obair a bhaineann le foirmeacha:
sonraí a ullmhú agus a athstruchtúrú chun iad a dhéanamh réidh le rindreáil
foirmeacha HTML a chruthú do na sonraí
foirmeacha agus sonraí curtha isteach ón gcliant a fháil agus a phróiseáil
Is féidir aithe* cód a scríobh a dhéanann é seo go léir de láimh, ach is féidir le Django aire a thabhairt dó go léir duit.
Foirmeacha i DjangoLink to this heading
Tá cur síos déanta againn ar fhoirmeacha HTML go hachomair, ach níl HTML <form>```` ach cuid amháin den innealra a theastaíonn.
I gcomhthéacs iarratais gréasáin, d'fhéadfadh 'foirm' tagairt a dhéanamh don HTML sin ``<form>, nó don Django:Class: `Foirm a tháirgeann í, nó do na sonraí struchtúrtha ar ais nuair a chuirtear isteach í, nó don bhailiúchán oibre deireadh go deireadh na gcodanna seo.
An rang Django: Class: FormLink to this heading
I gcroílár an chórais comhpháirteanna seo tá rang Django's:Class: Form. Ar an mbealach céanna a dhéanann samhail Django cur síos ar struchtúr loighciúil réada, a iompar, agus an bealach a léirítear a chodanna dúinn, a: aicme: Foirm cur síos ar fhoirm agus socraíonn sé conas a oibríonn sé agus a fheictear.
Ar bhealach cosúil le réimsí rang samhail a léarscáil go réimsí bunachar sonraí, léarscáil réimsí ranga foirme chuig eilimintí foirm HTML <input>```. (A: Aicme: Mapáil ModelForm `réimsí ranga samhail chuig eilimintí foirm HTML `` <input>trí a: class: `Form; seo a bhfuil riarachán Django bunaithe air.)
Is ranganna iad réimsí foirme iad féin; bainistíonn siad sonraí foirme agus déanann siad bailíochtú nuair a chuirtear foirm isteach. A: Aicme: Láimhseálann DateField agus a:class: FileField cineálacha an-éagsúla sonraí agus caithfidh siad rudaí éagsúla a dhéanamh leis.
Léirítear réimse foirme d'úsáideoir sa bhrabhsálaí mar “giuirléid” HTML - píosa innealra comhéadan úsáideora. Tá réamhshocrú cuí ag gach cineál réimse: doc: Aicme giuirléid, ach is féidir iad seo a shárú </ref/forms/widgets/> de réir mar is gá.
Foirmeacha a thionscnamh, a phróiseáil agus a rindreáilLink to this heading
Agus réad á rindreáil i Django, is ginearálta déanaimid:
faigh greim air sa radharc (faigh ón mbunachar sonraí é, mar shampla)
cuir chuig comhthéacs an teimpléid é
é a leathnú go marcáil HTML ag úsáid athróga teimpléad
Is éard atá i gceist le foirm a rindreáil i dteimpléad beagnach an obair chéanna le haon chineál réad eile a rindreáil, ach tá roinnt príomhdhifríochtaí ann.
I gcás samhail samhail nach raibh aon sonraí ann, is annamh a bheadh sé úsáideach riamh aon rud a dhéanamh leis i dteimpléad. Ar an láimh eile, bíonn ciall foirfe foirm neamhdhaonra a thabhairt - sin an rud a dhéanaimid nuair is mian linn go ndéanfadh an t-úsáideoir é a dhaonrú.
Mar sin nuair a láimhseálann muid samhail samhail i radharc, is gnách go mbímid é a aisghabháil ón mbunachar sonraí. Nuair a bhíonn muid ag déileáil le foirm de ghnáth déanaimid í sa radharc.
Nuair a dhéanaimid foirm a chruthú, is féidir linn a roghnú í a fhágáil folamh nó í a réamhdhíonrú, mar shampla le:
sonraí ó shampla samhail shábháilte (mar atá i gcás foirmeacha riaracháin le haghaidh eagarthóireachta)
sonraí atá curtha le chéile againn ó fhoinsí eile
sonraí a fuarthas ó aighneacht foirm HTML roimhe seo
Is é an ceann deireanach de na cásanna seo an ceann is suimiúla, toisc gurb é an rud a fhágann gur féidir d'úsáideoirí ní amháin láithreán gréasáin a léamh, ach faisnéis a sheoladh ar ais chuige freisin.
Foirm a thógáilLink to this heading
An obair is gá a dhéanamhLink to this heading
Cuir i gcás gur mhaith leat foirm shimplí a chruthú ar do shuíomh Gréasáin, d'fhonn ainm an úsáideora a fháil. Bheadh rud éigin mar seo ag teastáil uait i do theimpléad:
<form action="/your-name/" method="post">
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" value="{{ current_name }}">
<input type="submit" value="OK">
</form>
Insíonn sé seo don bhrabhsálaí sonraí na bhfoirme a thabhairt ar ais chuig an URL /your-ainm/, ag baint úsáide as an modh POST ``. Taispeánfaidh sé réimse téacs, lipéadaithe “Do ainm:”, agus cnaipe marcáilte “OK”. Má tá athróg ``current_name sa chomhthéacs teimpléid, úsáidfear é sin chun an réimse your_name réamh-líonadh.
Beidh amharc ag teastáil uait a léiríonn an teimpléad ina bhfuil an fhoirm HTML, agus is féidir leis an réimse current_name a sholáthar de réir mar is cuí.
Nuair a chuirtear an fhoirm isteach, beidh sonraí na foirme san iarratas ``POST ``a sheoltar chuig an bhfreastalaí.
Anois beidh radharc ag teastáil uait freisin a fhreagraíonn don URL /d'ainm/ sin a gheobhaidh na péirí eochair/luacha cuí san iarratas, agus ansin iad a phróiseáil.
Is foirm an-simplí é seo. Go praiticiúil, d'fhéadfadh go mbeadh mórán nó na céadta réimsí i bhfoirm, a d'fhéadfadh go mbeadh go leor acu a réamhdhaonrú, agus b'fhéidir go bhfuilimid ag súil go n-oibreoidh an t-úsáideoir tríd an timthriall eagarthóireach-chur isteach arís agus arís eile
B'fhéidir go mbeidh roinnt bailíochtaithe ag teastáil uainn sa bhrabhsálaí, fiú sula gcuirtear an fhoirm isteach; b'fhéidir gur mhaith linn réimsí i bhfad níos casta a úsáid, a ligeann don úsáideoir rudaí a dhéanamh cosúil le dátaí a roghnú ó fhéilire agus mar sin de.
Ag an bpointe seo tá sé i bhfad níos éasca Django a fháil chun an chuid is mó den obair seo a dhéanamh dúinn.
Foirm a thógáil i DjangoLink to this heading
An rang: aicme: FoirmLink to this heading
Tá a fhios againn cheana féin cén chuma atá againn ar ár bhfoirm HTML. Is é seo an pointe tosaigh atá againn dó i Django:
foirme.pyfrom django import forms
class NameForm(forms.Form):
your_name = forms.CharField(label="Your name", max_length=100)
Sainmhíníonn sé seo a: aicme: Foirm aicme le réimse amháin (your_name). Chuireamar lipéad atá cairdiúil don duine i bhfeidhm ar an réimse, a bheidh le feiceáil sa <label>```nuair a rinneofar é (cé sa chás seo, is é an:attr: ~field.label a shonraíomar an ceann céanna i ndáiríre a ghinteofaí go huathoibríoch dá bhfágfaimis é).
Sainmhínítear uasfhad incheadaithe an réimse ag: attr: ~charfield.max_Length. Déanann sé seo dhá rud. Cuireann sé maxlength ="100" ar an HTML <input> (mar sin ba chóir don bhrabhsálaí cosc ar an úsáideoir níos mó ná an líon sin carachtair a iontráil sa chéad áit). Ciallaíonn sé freisin nuair a fhaigheann Django an fhoirm ar ais ón mbrabhsálaí, go ndéanfaidh sé fad na sonraí a bhailíochtú.
A: Class: Tá modh: meth: ~form.is_valid () `ag sampla `Form, a ritheann gnáthaimh bailíochtaithe dá réimsí go léir. Nuair a thugtar ar an modh seo, má tá sonraí bailí i ngach réimse, beidh sé:
tuairisceán
Truecuir sonraí na foirme ina tréith: attr: ~form.Cleaned_Data.
Beidh cuma ar an bhfoirm iomlán, nuair a rindreáiltear den chéad uair, mar seo a leanas:
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" maxlength="100" required>
Tabhair faoi deara nach n-áirítear ion** na clibeanna <form>, nó cnaipe cuir isteach. Beidh orainn iad siúd féin a sholáthar sa teimpléad.
An radharcLink to this heading
Déantar sonraí foirme a sheoltar ar ais chuig suíomh Gréasáin Django a phróiseáil le dearcadh, de ghnáth an dearcadh céanna a d'fhoilsigh an fhoirm Ligeann sé seo dúinn cuid den loighic chéanna a athúsáid.
Chun an fhoirm a láimhseáil ní mór dúinn í a chur isteach sa radharc don URL áit ar mhaith linn go bhfoilsíodh í:
views.pyfrom django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import NameForm
def get_name(request):
# if this is a POST request we need to process the form data
if request.method == "POST":
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
return HttpResponseRedirect("/thanks/")
# if a GET (or any other method) we'll create a blank form
else:
form = NameForm()
return render(request, "name.html", {"form": form})
Má thagann muid ar an radharc seo le hiarratas ``GET ``, cruthóidh sé sampla foirme folamh agus cuirfidh sé i gcomhthéacs an teimpléid atá le léiriú. Seo an rud is féidir linn a bheith ag súil go dtarlóidh an chéad uair a thugaimid cuairt ar an URL.
Má chuirtear an fhoirm isteach ag baint úsáide as iarratas POST ``, cruthóidh an dearcadh sampla foirme arís agus líonfaidh sé le sonraí ón iarratas: ``form = AinmForm (request.post) Tugtar “sonraí ceangailteach leis an bhfoirm” air seo (foirme*teorann* í anois).
Glaoimid modh is_valid () ``ar an bhfoirm; mura bhfuil sé ``True, téimid ar ais chuig an teimpléad leis an bhfoirm. An uair seo níl an fhoirm folamh a thuilleadh (untheor) mar sin déanfar na sonraí a cuireadh isteach roimhe seo sa fhoirm HTML, áit ar féidir í a chur in eagar agus a cheartú de réir mar is gá.
Más é is_valid () ```True, beidh muid in ann anois na sonraí foirme bailíochtaithe go léir a fháil ina tréith cleaned_data. Is féidir linn na sonraí seo a úsáid chun an bunachar sonraí a nuashonrú nó próiseáil eile a dhéanamh sula seolfaimid atreorú HTTP chuig an mbrabhsálaí ag insint dó cá háit a rachaidh
An teimpléadLink to this heading
Ní gá dúinn mórán a dhéanamh inár dteimpléad name.html:
<form action="/your-name/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
Déanfar réimsí uile na foirme agus a dtréithe a dhíphacáil isteach i marcáil HTML ón {{form}} sin ag teanga teimpléad Django.
<form>Tá foirm gréasáin oibre againn anois, a thuairiscítear ag Django: Class: Form, a phróiseáiltear ag radharc, agus a rindreáiltear mar HTML ```.
Sin gach rud a theastaíonn uait chun tosú, ach cuireann creat na bhfoirmeacha i bhfad níos mó ar do mhéar. Nuair a thuigeann tú buneilimintí an phróisis a thuairiscítear thuas, ba chóir duit a bheith réidh chun gnéithe eile den chóras foirmeacha a thuiscint agus réidh chun beagán níos mó a fhoghlaim faoin innealra bunúsach.
Tuilleadh faoi ranganna Django:Class: FormLink to this heading
Cruthaítear gach rang foirme mar fho-aicmí de: aicme: django.forms.form nó:class: Django.Forms.ModelForm. Is féidir leat smaoineamh ar ModelForm mar fho-aicme de Form. Tá feidhmiúlacht choiteann ag Foirm ``agus `ModelForm i ndáiríre ó rang ``BaseForm ``(príobháideach), ach is annamh a bhíonn an mionsonraí cur chun feidhme seo tábhachtach.
Cásanna foirmeacha ceangailte agus gan cheangalLink to this heading
Tá an t-idirdhealú idir: ref: ref-forms-api-bound-unbord tábhachtach:
Níl aon sonraí a bhaineann le foirm neamhcheangailte leis. Nuair a dhéanfar é don úsáideoir, beidh sé folamh nó beidh luachanna réamhshocraithe ann.
Tá sonraí curtha isteach ag foirm cheangailte, agus dá bhrí sin is féidir í a úsáid chun a rá an bhfuil na sonraí sin bailí. Má dhéantar foirm cheangailte neamhbhailí a léiriú, féadfaidh teachtaireachtaí earráide inlíne a áireamh ann ag insint don úsáideoir na sonraí
Inseoidh an tréith foirm 's:attr: ~form.is_bound duit an bhfuil sonraí ceangailte ag foirm nó nach bhfuil.
Tuilleadh ar réimsíLink to this heading
Smaoinigh ar fhoirm níos úsáideach ná ár sampla íosta thuas, a d'fhéadfaimis a úsáid chun feidhmiúlacht “déan teagmháil liom” a chur i bhfeidhm ar shuíomh Gréasáin pearsanta:
foirme.pyfrom django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
D'úsáid ár bhfoirm níos luaithe réimse amháin, your_name, a: class: Charfield. Sa chás seo, tá ceithre réimse ag ár bhfoirm: ábhar ``, `teachtaireacht, seoltóir ``agus ``cc_myself`. :class: Charfield, :class: emailField agus:class: BooleanField ach trí cinn de na cineálacha réimse atá ar fáil; is féidir liosta iomlán a fháil in:doc: /ref/forms/fields.
GiuirléidíLink to this heading
</ref/forms/widgets/> <input type="text">Tá comhfhreagrach ag gach réimse foirme: doc: Class giuirléid, a fhreagraíonn do ghuirléid fhoirme HTML mar ````.
I bhformhór na gcásanna, beidh giuirléid réamhshocraithe ciallmhar sa réimse <input type="text">Mar shampla, de réir réamhshocraithe, beidh a: class: textInput giuirléid ag a: class: Charfield, a tháirgeann ```` sa HTML. Más gá duit <textarea> ina ionad sin, shonrófá an giuirléid chuí agus do réimse foirme á shainiú agat, mar a rinneamar don réimse ``teachtaireacht ``.
Sonraí réimseLink to this heading
Cibé na sonraí a chuirtear isteach le foirm, nuair a bheidh siad bailíochtaithe go rathúil trí ghlaoch ar is_valid () `(agus ``is_valid ()` tar éis ``True ar ais), beidh sonraí na bhfoirme bailíochtaithe sa fhoclóir form.cleaned_data. Déanfar na sonraí seo a thiontú go deas i gcineálacha Python duit.
Sa sampla foirme teagmhála thuas, is luach boolean é cc_myself`. Mar an gcéanna, déanann réimsí mar: class: IntegerField agus:class: FloatField luachanna a thiontú go Python int` agus float faoi seach.
Seo conas a d'fhéadfaí na sonraí foirme a phróiseáil sa dearcadh a láimhseálann an fhoirm seo:
views.pyfrom django.core.mail import send_mail
if form.is_valid():
subject = form.cleaned_data["subject"]
message = form.cleaned_data["message"]
sender = form.cleaned_data["sender"]
cc_myself = form.cleaned_data["cc_myself"]
recipients = ["info@example.com"]
if cc_myself:
recipients.append(sender)
send_mail(subject, message, sender, recipients)
return HttpResponseRedirect("/thanks/")
Teastaíonn roinnt láimhseála breise ó roinnt cineálacha Mar shampla, ní mór comhaid a uaslódáiltear ag baint úsáide as foirm a láimhseáil ar bhealach difriúil (is féidir iad a aisghabháil ó Request.Files, seachas request.post). Le haghaidh sonraí maidir le conas uaslódálacha comhad a láimhseáil le d'fhoirm, féach:ref: binding-uploaded-files.
Ag obair le teimpléid fhoirLink to this heading
Níl le déanamh agat chun d'fhoirm a chur i dteimpléad ná an tsampla foirme a chur i gcomhthéacs an teimpléid. <label><input>Mar sin má thugtar foirm ``sa chomhthéacs ar d'fhoirm, déanfaidh {{form}} a eilimintí agus ```a ghnéithe go cuí.
Teimpléid foirme in-athLink to this heading
Gintear an t-aschur HTML agus foirm á rindreáil air féin trí theimpléad. Is féidir leat é seo a rialú trí chomhad teimpléad iomchuí a chruthú agus saincheap:setting: FORM_RENDER a shocrú chun sean:attr: ~django.forms.renderers.baserenderer.form_template_name a úsáid ar fud an láithreáin. Is féidir leat foirm a shaincheapadh freisin tríd an tréith foirm 's:attr: ~django.forms.form.template_name a shárú chun an fhoirm a léiriú ag baint úsáide as an teimpléad saincheaptha, nó trí ainm an teimpléid a chur go díreach chuig:meth: .form.render.
Mar thoradh ar an sampla thíos beidh {{form}} a rinneadh mar aschur an teimpléad form_snippet.html.
I do theimpléid:
# In your template:
{{ form }}
# In form_snippet.html:
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
Ansin is féidir leat an socrú: setting: FORM_RENDER a chumrú:
settings.pyfrom django.forms.renderers import TemplatesSetting
class CustomFormRenderer(TemplatesSetting):
form_template_name = "form_snippet.html"
FORM_RENDERER = "project.settings.CustomFormRenderer"
... nó le haghaidh foirm amháin:
class MyForm(forms.Form):
template_name = "form_snippet.html"
...
... nó le haghaidh rindreáil aonair de shampla foirme, ag cur isteach ainm an teimpléid chuig an:meth: .form.render. Seo sampla de seo a úsáidtear i radharc:
def index(request):
form = MyForm()
rendered_form = form.render("form_snippet.html")
context = {"form": rendered_form}
return render(request, "index.html", context)
Féach:ref: ref-forms-api-outputting-html le haghaidh tuilleadh sonraí.
Teimpléid grúpa allamuighLink to this heading
Tá gach réimse ar fáil mar thréith den fhoirm, ag baint úsáide as ``{{form.name_of_field}} i teimpléad. Tá modh a:meth: `~django.forms.boundfield.as_field_group ag réimse a thugann eilimintí gaolmhara an réimse mar ghrúpa, a lipéad, a ghuirléid, earráidí agus téacs cabhrach.
Ligeann sé seo teimpléid cineálacha a scríobh a shocraíonn eilimintí réimsí sa leagan amach riachtanach Mar shampla:
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.as_field_group }}
</div>
<div class="fieldWrapper">
{{ form.message.as_field_group }}
</div>
<div class="fieldWrapper">
{{ form.sender.as_field_group }}
</div>
<div class="fieldWrapper">
{{ form.cc_myself.as_field_group }}
</div>
De réir réamhshocraithe úsáideann Django an teimpléad ” django/forms/field.html “ atá deartha le húsáid leis an stíl foirme réamhshocraithe ” django/forms/div.html “.
Is féidir an teimpléad réamhshocraithe a shaincheapadh trí:attr: ~django.forms.renderers.baserenderer.field_template_name i do leibhéal tionscadail: setting: FORM_RENDER:
from django.forms.renderers import TemplatesSetting
class CustomFormRenderer(TemplatesSetting):
field_template_name = "field_snippet.html"
... nó ar réimse amháin:
class MyForm(forms.Form):
subject = forms.CharField(template_name="my_custom_template.html")
...
... nó ar bhonn in aghaidh iarratais trí ghlaoch ar :meth: .boundfield.render agus ainm teimpléad a sholáthar:
def index(request):
form = ContactForm()
subject = form["subject"]
context = {"subject": subject.render("my_custom_template.html")}
return render(request, "index.html", context)
Réimsí rindreála de láimhLink to this heading
Is féidir rialú níos mó gránach ar rindreáil allamuigh a dhéanamh freisin. Is dócha go mbeidh sé seo i teimpléad réimse saincheaptha, chun ligean an teimpléad a scríobh uair amháin agus a athúsáid do gach réimse. Mar sin féin, is féidir rochtain a fháil go díreach air ón tréith allamuigh ar an bhfoirm. Mar shampla:
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.errors }}
<label for="{{ form.subject.id_for_label }}">Email subject:</label>
{{ form.subject }}
</div>
<div class="fieldWrapper">
{{ form.message.errors }}
<label for="{{ form.message.id_for_label }}">Your message:</label>
{{ form.message }}
</div>
<div class="fieldWrapper">
{{ form.sender.errors }}
<label for="{{ form.sender.id_for_label }}">Your email address:</label>
{{ form.sender }}
</div>
<div class="fieldWrapper">
{{ form.cc_myself.errors }}
<label for="{{ form.cc_myself.id_for_label }}">CC yourself?</label>
{{ form.cc_myself }}
</div>
Is féidir eilimintí iomlána <label>```a ghiniúint freisin ag baint úsáide as an: meth: ~django.forms.boundfield.label_tag. Mar shampla:
<div class="fieldWrapper">
{{ form.subject.errors }}
{{ form.subject.label_tag }}
{{ form.subject }}
</div>
Teachtaireachtaí earráide foirmLink to this heading
Is é praghas na solúbthachta seo beagán níos mó oibre. Go dtí seo ní raibh orainn a bheith buartha faoi conas earráidí foirme a thaispeáint, mar tugadh aire dúinn sin. Sa sampla seo bhí orainn a chinntiú go dtugann muid aire d'aon earráidí do gach réimse agus d'aon earráidí don fhoirm ina iomláine. Tabhair faoi deara {{form.non_field_errors}} ag barr na foirme agus cuardaigh an teimpléad le haghaidh earráidí ar gach réimse.
Ag baint úsáide as {{form.name_of_field.errors}} taispeántar liosta earráidí foirme, a rinneadh mar liosta neamh-ordaithe. D'fhéadfadh sé seo a bheith cosúil le:
<ul class="errorlist">
<li>Sender is required.</li>
</ul>
Tá aicme CSS de earrorlist ar an liosta chun ligean duit a chuma a stíleáil. Más mian leat taispeáint earráidí a shaincheapadh tuilleadh is féidir leat é sin a dhéanamh trí lúpáil orthu:
{% if form.subject.errors %}
<ol>
{% for error in form.subject.errors %}
<li><strong>{{ error|escape }}</strong></li>
{% endfor %}
</ol>
{% endif %}
Déanfar earráidí neamh-réimse (agus/nó earráidí réimse i bhfolach a rinneadh ag barr na foirme nuair a úsáidtear cúntóirí cosúil le form.as_p () `) le rang breise ``neamh-réimse` chun cabhrú leo a idirdhealú ó earráidí réimsiúla. Mar shampla, bheadh cuma ``{{form.non_field_errors}} `:
<ul class="errorlist nonfield">
<li>Generic validation error</li>
</ul>
Féach: doc: /ref/forms/api le haghaidh tuilleadh eolais faoi earráidí, stíliú, agus oibriú le tréithe foirme i dteimpléid.
Lúpáil thar réimsí na foirmeLink to this heading
Má tá an HTML céanna á úsáid agat do gach réimse foirme, is féidir leat cód dúblach a laghdú trí lúb {% for%} a úsáid trí lúb {% for%}:
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help" id="{{ field.auto_id }}_helptext">
{{ field.help_text|safe }}
</p>
{% endif %}
</div>
{% endfor %}
I measc na dtréithe úsáideacha ar {{field}} tá:
{{field.errors}}Aschur <ul class="errorlist">```` ina bhfuil aon earráidí bailíochtaithe a fhreagraíonn don réimse seo. Is féidir leat cur i láthair na n-earráidí a shaincheapadh le lúb
{% d'earráid in field.errors%}. Sa chás seo, is teaghrán é gach rud sa lúb ina bhfuil an teachtaireacht earráide.{{field.field}}An sampla: Class: ~django.forms.field ón rang foirm a fhilleann seo:class: ~django.forms.boundfield. Is féidir leat é a úsáid chun rochtain a fháil ar: class: ~django.forms.field tréithe, m.sh.
{{char_field.field.max_length}}.{{field.help_text}}Aon téacs cabhrach a bhí bainteach leis an réimse.
{{field.html_name}}Ainm an réimse a úsáidfear i réimse ainm an eilimint ionchuir. Cuireann sé seo réimír an fhoirme san áireamh, má tá sé socraithe.
{{field.id_for_label}}An ID a úsáidfear don réimse seo (
id_emailsa sampla thuas). Má tá an lipéad á thógáil agat de láimh, b'fhéidir gur mhaith leat é seo a úsáid in ionadlabel_tag. Tá sé úsáideach freisin, mar shampla, má tá roinnt JavaScript inlíne agat agus má theastaíonn uait ID an réimse crua-chódú a sheachaint.{{field.is_hidden}}Is é an tréith seo
Truemás réimse i bhfolach é an réimse foirme agusFalsea shlí eile. Níl sé úsáideach go háirithe mar athróg teimpléad, ach d'fhéadfadh sé a bheith úsáideach i dtástálacha coinníollach mar:
{% if field.is_hidden %}
{# Do something special #}
{% endif %}
{{field.label}}Lipéad an réimse, m.sh.
Seoladh ríomhphoist.{{field.label_tag}}Lipéad an réimse fillte sa chlib HTML <label>```` cuí. Áirítear leis seo an fhoirm 's:attr: ~django.forms.form.label_suffix. Mar shampla, is é an réamhshocraithe
label_suffixcolon:<label for="id_email">Email address:</label>{{field.legend_tag}}<label><fieldset>Cosúil le
field.label_tagach úsáideann sé clib ```` <legend>in ionad ``, le haghaidh giuirléidí le hionchuir iolracha atá fillte i ``.{{field.use_fieldset}}<legend>Is é an tréith seo
Truemá tá ionchuir iolracha i ngiuirléid an réimse foirme ar chóir a ghrúpáil go séimeantach i ```` le<fieldset>chun inrochtaineacht a fheabhsú. Úsáid sampla i dteimpléad:
{% if field.use_fieldset %}
<fieldset>
{% if field.label %}{{ field.legend_tag }}{% endif %}
{% else %}
{% if field.label %}{{ field.label_tag }}{% endif %}
{% endif %}
{{ field }}
{% if field.use_fieldset %}</fieldset>{% endif %}
{{field.value}}Luach an réimse. m.sh.
someone@example.com.
Ábhar breiseLink to this heading
Clúdaíonn sé seo na buneilimintí, ach is féidir le foirmeacha a lán níos mó a dhéanamh:
- Foirmeacha
- Sonraí tosaigh a úsáid le tacar foirme
- An líon uasta na bhfoirmeacha a theorannú
- Uaslíon na bhfoirmeacha ionchasacha a theorannú
- Bailíochtú Formset
- Líon na bhfoirmeacha i dtacar foirmeacha a bhailíochtú
- Déileáil le foirmeacha a ordú agus a scriosadh
- Réimsí breise a chur le tacar foirmeacha
- Ag dul paraiméadair saincheaptha chuig foirmeacha
- Réimír foirmshraith a shaincheapadh
- Foirmshraith a úsáid i radhairc agus teimpléid
- Foirmeacha a chruthú ó shamhl
- Sócmhainní Foirm (an aicme ``Meáin ``)