Na Foirmeacha APILink to this heading

Foirmeacha ceangailte agus gan cheangalLink to this heading

A: Aicme: Is é an sampla Foirme teorann le tacar sonraí, nó gan teorann.

  • Má tá sé teorann le tacar sonraí, tá sé in ann na sonraí sin a bhailíochtú agus an fhoirm a léiriú mar HTML leis na sonraí a thaispeántar sa HTML.

  • Má tá sé**gan teorann**, ní féidir leis bailíochtú a dhéanamh (toisc nach bhfuil aon sonraí le bailíochtú!) , ach is féidir leis an bhfoirm bán a rinneadh mar HTML fós.

class FormLink to this definition

Chun sampla untheor:class: Form a chruthú, déan an rang a chur isteach:

Python console
>>> f = ContactForm()

Chun sonraí a cheangal le foirm, cuir na sonraí mar fhoclóir mar an chéad pharaiméadar chuig do thógálaí aicme:class: Form:

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)

Sa bhfoclóir seo, is iad na heochracha na hainmneacha réimse, a fhreagraíonn do na tréithe i d'aicme:class: Form. Is iad na luachanna na sonraí atá tú ag iarraidh a bhailíochtú. Is teaghráin iad seo de ghnáth, ach níl aon cheanglas ann gur teaghráin iad; braitheann an cineál sonraí a chuireann tú ar: aicme: Field, mar a fheicfimid i gceann nóiméad.

Form.is_boundLink to this definition

Más gá duit idirdhealú a dhéanamh idir cásanna foirme ceangailte agus neamhcheangailte ag an am rith, seiceáil luach na tréithe foirme's:attr: ~form.is_bound:

Python console
>>> f = ContactForm()
>>> f.is_bound
False
>>> f = ContactForm({"subject": "hello"})
>>> f.is_bound
True

Tabhair faoi deara go gcruthaíonn foirm*teorann* le sonraí folamh a rith le foclóir folamh:

Python console
>>> f = ContactForm({})
>>> f.is_bound
True

Má tá sampla teorain:class: Form agat agus má theastaíonn uait na sonraí a athrú ar bhealach éigin, nó más mian leat sampla untheor:class: Form a cheangal le roinnt sonraí, cruthaigh sampla eile: class: Form. Níl aon bhealach ann chun sonraí a athrú i gcás a:class: Form. Nuair a cruthaíodh a: aicme: Form sampla, ba cheart duit a shonraí a mheas gan athrú, cibé acu tá sonraí aige nó nach bhfuil.

Foirmeacha a úsáid chun sonraí a bhailíochtúLink to this heading

Form.clean()Link to this definition

Cuir modh ``glan () `i bhfeidhm ar do ``Foirm ``nuair a chaithfidh tú bailíochtú saincheaptha a chur le haghaidh réimsí atá idirspleáchach. Féach: ref: `validating-fields-with-glan `mar shampla úsáid.

Form.is_valid()Link to this definition

Is é príomhthasc a: aicme: Form ná sonraí a bhailíochtú. Le sampla teorain:class: Form, glaoigh ar an modh:meth: ~form.is_valid chun bailíochtú a reáchtáil agus boolean a thabhairt ar ais ag ainmniú an raibh na sonraí bailí:

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)
>>> f.is_valid()
True

Déanaimis iarracht le roinnt sonraí neamhbhailí. Sa chás seo, tá ``ábhar ``bán (earráid, toisc go bhfuil gach réimse riachtanach de réir réamhshocraithe) agus ní seoladh ríomhphoist bailí é ``seoltó`:

Python console
>>> data = {
...     "subject": "",
...     "message": "Hi there",
...     "sender": "invalid email address",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)
>>> f.is_valid()
False
Form.errorsLink to this definition

Rochtain ar thréith :attr: ~form.errors chun foclóir teachtaireachtaí earráide a fháil:

Python console
>>> f.errors
{'sender': ['Enter a valid email address.'], 'subject': ['This field is required.']}

Sa fhoclóir seo, is iad na heochracha na hainmneacha réimse, agus is liostaí teaghráin iad na luachanna a léiríonn na teachtaireachtaí earráide. Stóráiltear na teachtaireachtaí earráide i liostaí toisc go bhféadfadh teachtaireachtaí earráide iliomad a bheith

Is féidir leat rochtain a fháil ar: attr: ~form.errors gan glaoch ar: meth: ~form.is_valid ar dtús. Déanfar sonraí na foirme a bhailíochtú an chéad uair a ghlaonn tú ar: meth: ~form.is_valid nó access:attr: ~form.errors.

Ní ghlaofar ar na gnáthaimh bailíochtaithe ach uair amháin, is cuma cé mhéad uair a rochtain agat ar: attr: ~form.errors nó glao:meth: ~form.is_valid. Ciallaíonn sé seo má tá fo-iarsmaí ag bailíochtú, ní spreagfar na fo-iarsmaí sin ach uair amháin.

Form.errors.as_data()Link to this definition

Faigheann dict ar ais a léarscáil réimsí chuig a gcásanna bunaidh ValidationError.

Python console
>>> f.errors.as_data()
{'sender': [ValidationError(['Enter a valid email address.'])],
'subject': [ValidationError(['This field is required.'])]}

Úsáid an modh seo am ar bith is gá duit earráid a aithint trína ``cód ``. Cuireann sé seo ar chumas rudaí cosúil le teachtaireacht an earráide a athscríobh nó loighic saincheaptha a scríobh i radharc nuair a bhíonn earráid Is féidir é a úsáid freisin chun na hearráidí a shraitheadh i bhformáid saincheaptha (m.sh. XML); mar shampla,:: meth: ~form.errors.as_json () `ag brath ar ``as_data () `.

Tá an gá atá le modh as_data () ``mar gheall ar chomhoiriúnacht ar ais. Cailleadh cásanna ``ValidationError roimhe seo chomh luath agus a gcuid teachtaireachtaí earráide **a rinneadh leis an bhfoclóir Form.errors. Go hidéalach bheadh Form.errors` stóráilte cásanna agus modhanna ValidationError le réimír as_ iad a dhéanamh, ach b'éigean é a dhéanamh ar an mbealach eile d'fhonn gan cód a bhriseadh a bhfuil súil le teachtaireachtaí earráide a rinneadh i Form.errors`.

Form.errors.as_json(escape_html=False)Link to this definition

Filleann sé na hearráidí a shraitheadh mar JSON.

Python console
>>> f.errors.as_json()
{"sender": [{"message": "Enter a valid email address.", "code": "invalid"}],
"subject": [{"message": "This field is required.", "code": "required"}]}

De réir réamhshocraithe, ní éalaíonn as_json () ``a aschur. á úsáid le haghaidh rud éigin cosúil le hiarratais AJAX chuig amharc foirme ina ndéanann an cliant an freagra a léirmhíniú agus earráidí isteach sa leathanach, beidh ag iarraidh a bheith cinnte go n-éalóidh na torthaí ar thaobh an chliaint chun an fhéidearthacht ionsaí scripteála tras-láithreáin a sheachaint. Is féidir leat é seo a dhéanamh i JavaScript le ``Element.textContent = ErrorText nó le $ (el) .text (ErrorText) ``jQuery (seachas a fheidhm ``.html ()).

Mura dteastaíonn uait éalú taobh an chliaint a úsáid ar chúis éigin, is féidir leat escape_html = true a shocrú freisin agus éalófar teachtaireachtaí earráide ionas gur féidir leat iad a úsáid go díreach i HTML.

Form.errors.get_json_data(escape_html=False)Link to this definition

Tugann na hearráidí ar ais mar fhoclóir atá oiriúnach le sraitheadh chuig JSON. :meth: `Form.errors.as_json () `filleann JSON sraitheach, agus filleann sé seo na sonraí earráide ar ais sula ndéantar iad a shraitheadh.

Iompraíonn an paraiméadar escape_html mar a thuairiscítear in:meth: `Form.errors.as_json () `.

Form.add_error(field, error)Link to this definition

Ligeann an modh seo earráidí a chur le réimsí ar leith ón modh ``Form.clean () `, nó ón taobh amuigh den fhoirm ar fad; mar shampla ó radharc.

Is é an argóint réimse ainm an réimse ar chóir na hearráidí a chur leis. <django.forms.Form.non_field_errors>Más é a luach None, déileálfar leis an earráid mar earráid neamh-réimse mar a d'fhaigh:meth: `form.non_field_errors () `.

Is féidir leis an argóint earráid a bheith ina shreang, nó b'fhéidir mar shampla de ValidationError. Féach:ref: earrá-bhailíochtai-earráid le haghaidh dea-chleachtais agus earráidí foirme á sainmhíniú.

Tabhair faoi deara go mbaineann form.add_error () ``an réimse ábhartha go huathoibríoch ó ``cleaned_data.

Form.has_error(field, code=None)Link to this definition

Tugann an modh seo boolean ar ais ag ainmniú an bhfuil earráid i réimse le earráid sonrach cód ``. Más é ```Cód ```None, fillfidh sé True má tá aon earráidí sa réimse ar chor ar bith.

Chun seiceáil le haghaidh earráidí neamh-réimse bain úsáid as: data: ~django.core.EXCEPTIONS.NON_FIELD_ERRORS mar an paraiméadar field.

Form.non_field_errors()Link to this definition

Tugann an modh seo an liosta earráidí ó:attr: Form.errors <django.forms.Form.errors>`nach bhfuil baint acu le réimse áirithe. Áirítear leis seo ``ValidationError`s a ardaítear in:meth: Form.clean () `agus earráidí curtha leis ag baint úsáid:meth: `Form.add_error (None, <django.forms.Form.clean>“...”) <django.forms.Form.add_error>.

Iompar foirmeacha neamhcheangailteLink to this heading

Tá sé gan chiall foirm a bhailíochtú gan aon sonraí, ach, chun an taifead, seo cad a tharlaíonn le foirmeacha neamhcheangailte:

Python console
>>> f = ContactForm()
>>> f.is_valid()
False
>>> f.errors
{}

Luachanna foirme tosaighLink to this heading

Form.initialLink to this definition

Úsáid: Attr: ~Form.Initial chun luach tosaigh réimsí foirme a dhearbhú ag an am rith. Mar shampla, b'fhéidir gur mhaith leat réimse ``ainm úsáideora ``a líonadh isteach le hainm úsáideora an tseisiúin reatha.

Chun é seo a chur i gcrích, bain úsáid as an argóint:attr: ~form.initial chuig a:class: Form. Ba chóir go mbeadh an argóint seo, má thugtar, ina fhoclóir a mhapáil ainmneacha réimse go luachanna Cuir san áireamh ach na réimsí a bhfuil luach tosaigh á shonrú agat dóibh; ní gá gach réimse a áireamh i d'fhoirm. Mar shampla:

Python console
>>> f = ContactForm(initial={"subject": "Hi there!"})

Ní thaispeántar na luachanna seo ach le haghaidh foirmeacha neamhcheangailte, agus ní úsáidtear iad mar luachanna cúltaca mura gcuirtear luach ar leith ar fáil.

Má shainmhíníonn a:class: ~django.forms.field: attr: ~Field.Initial agus san áireamh tuat:attr: ~form.initial agus an Form` á gcur isteach agat, ansin beidh tosaíocht ag an deireanach initial. Sa sampla seo, soláthraítear tosaithe ag leibhéal an réimse agus ag leibhéal na foirme araon, agus faigheann an dara ceann tosaíocht:

Python console
>>> from django import forms
>>> class CommentForm(forms.Form):
...     name = forms.CharField(initial="class")
...     url = forms.URLField()
...     comment = forms.CharField()
...
>>> f = CommentForm(initial={"name": "instance"}, auto_id=False)
>>> print(f)
<div>Name:<input type="text" name="name" value="instance" required></div>
<div>Url:<input type="url" name="url" required></div>
<div>Comment:<input type="text" name="comment" required></div>
Form.get_initial_for_field(field, field_name)Link to this definition

Tugann na sonraí tosaigh ar ais do réimse foirme. Aisghabhann sé na sonraí ó:attr: Form.initial má tá sé i láthair, ar shlí eile iarracht: attr: Field.initial. Déantar luachanna inghlaonta a mheas.

Moltar úsáid: attr: BoundField.Initial thar: meth: ~form.get_initial_for_field () `toisc go bhfuil comhéadan níos simplí ag ``BoundField.initial`. Chomh maith leis sin, dícheanglaíonn: meth: ~form.get_initial_for_field () `, :attr: `BoundField.Initial a luachanna a choscáin. Tá sé seo úsáideach go háirithe agus tú ag déileáil le glaonna a bhféadann a luachanna tuairisceáin athrú (m.sh. datetime.now` nó uuid.uuid4):

Python console
>>> import uuid
>>> class UUIDCommentForm(CommentForm):
...     identifier = forms.UUIDField(initial=uuid.uuid4)
...
>>> f = UUIDCommentForm()
>>> f.get_initial_for_field(f.fields["identifier"], "identifier")
UUID('972ca9e4-7bfe-4f5b-af7d-07b3aa306334')
>>> f.get_initial_for_field(f.fields["identifier"], "identifier")
UUID('1b411fab-844e-4dec-bd4f-e9b0495f04d0')
>>> # Using BoundField.initial, for comparison
>>> f["identifier"].initial
UUID('28a09c59-5f00-4ed9-9179-a3b074fa9c30')
>>> f["identifier"].initial
UUID('28a09c59-5f00-4ed9-9179-a3b074fa9c30')

Seiceáil cén fhoirm sonraí atá athraitheLink to this heading

Form.has_changed()Link to this definition

Úsáid an modh has_changed () ``ar do `Foirm nuair is gá duit a sheiceáil an bhfuil sonraí na foirme athraithe ó na sonraí tosaigh.

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> f = ContactForm(data, initial=data)
>>> f.has_changed()
False

Nuair a chuirtear an fhoirm isteach, déanaimid í a athchógáil agus soláthraímid na sonraí bunaidh ionas gur féidir an comparáid a dhéanamh:

Python console
>>> f = ContactForm(request.POST, initial=data)
>>> f.has_changed()

Beidh has_modified () ``True má tá na sonraí ó Request.post` difriúil ón méid a cuireadh ar fáil in:attr: ~form.initial nó False ar shlí eile. Déantar an toradh a ríomh trí ghlaoch: meth: field.has_changed do gach réimse san fhoirm.

Form.changed_dataLink to this definition

Tugann an tréith changed_data liosta d'ainmneacha na réimsí a bhfuil a luachanna i sonraí ceangailte na foirme (request.post` de ghnáth) difriúil ón méid a cuireadh ar fáil in:attr: ~form.initial. Tugann sé liosta folamh ar ais mura bhfuil aon sonraí difriúil.

Python console
>>> f = ContactForm(request.POST, initial=data)
>>> if f.has_changed():
...     print("The following fields changed: %s" % ", ".join(f.changed_data))
...
>>> f.changed_data
['subject', 'message']

Rochtain a fháil ar na réimsí ón bhfoirmLink to this heading

Form.fieldsLink to this definition

Is féidir leat rochtain a fháil ar na réimsí de:class: Form ón tréith fields:

Python console
>>> for row in f.fields.values():
...     print(row)
...
<django.forms.fields.CharField object at 0x7ffaac632510>
<django.forms.fields.URLField object at 0x7ffaac632f90>
<django.forms.fields.CharField object at 0x7ffaac3aa050>
>>> f.fields["name"]
<django.forms.fields.CharField object at 0x7ffaac6324d0>

Is féidir leat an réimse agus:class: .BoundField den sampla: Class: Form a athrú chun an bealach a chuirtear i láthair sa fhoirm a athrú:

Python console
>>> f.as_div().split("</div>")[0]
'<div><label for="id_subject">Subject:</label><input type="text" name="subject" maxlength="100" required id="id_subject">'
>>> f["subject"].label = "Topic"
>>> f.as_div().split("</div>")[0]
'<div><label for="id_subject">Topic:</label><input type="text" name="subject" maxlength="100" required id="id_subject">'

Bí cúramach gan an tréith base_fields a athrú toisc go mbeidh tionchar ag an modhnú seo ar gach cás ``ContactForm ``ina dhiaidh sin laistigh den phróiseas Python céanna:

Python console
>>> f.base_fields["subject"].label_suffix = "?"
>>> another_f = ContactForm(auto_id=False)
>>> another_f.as_div().split("</div>")[0]
'<div><label for="id_subject">Subject?</label><input type="text" name="subject" maxlength="100" required id="id_subject">'

Rochtain a fháil ar shonraí “glan”Link to this heading

Form.cleaned_dataLink to this definition

Tá gach réimse i rang a: “Foirm” freagrach ní amháin as sonraí a bhailíochtú, ach freisin as iad a “ghlanadh” - iad a normalú go formáid chomhsheasmhach. Is gné deas í seo, toisc go gceadaíonn sé sonraí do réimse áirithe a ionchur ar bhealaí éagsúla, agus aschur comhsheasmhach mar thoradh air i gcónaí.

Mar shampla, normalaíonn :class: ~django.forms.dateField ionchur isteach i réad Python datetime.date. Is cuma má chuireann tú sreang air san fhormáid '1994-07-15'`, réad ``datetime.date ``, roinnt formáidí eile, normalóidh ``DateField é i gcónaí go réad ``datetime.`date` fad is atá sé bailí.

Nuair a bheidh sampla a:class: ~Form cruthaithe agat le sraith sonraí agus é a bhailíochtú, is féidir leat rochtain a fháil ar na sonraí glan trína tréith ``cleaned_data`:

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)
>>> f.is_valid()
True
>>> f.cleaned_data
{'cc_myself': True, 'message': 'Hi there', 'sender': 'foo@example.com', 'subject': 'hello'}

Tabhair faoi deara go nglanann aon réimse téacs-bhunaithe - mar CharfieldEmailfield - an t-ionchur i sreang i gcónaí. Clúdóimid na himpleachtaí ionchódú níos déanaí sa doiciméad seo.

Mura ndéantar do chuid sonraí a bhailíochtú, níl ach na réimsí bailí sa fhoclóir ``cleaned_data ``:

Python console
>>> data = {
...     "subject": "",
...     "message": "Hi there",
...     "sender": "invalid email address",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)
>>> f.is_valid()
False
>>> f.cleaned_data
{'cc_myself': True, 'message': 'Hi there'}

Beidh eochair le haghaidh réimsí a shainmhínítear sa Foirm i gcónaí* sa cleaned_data`, fiú má chuireann tú sonraí breise nuair a shainmhíníonn tú an Foirm. Sa sampla seo, cuirimid dornán réimsí breise chuig an tógálaí ContactForm `, ach níl ach réimsí na foirme sa cleaned_data`:

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
...     "extra_field_1": "foo",
...     "extra_field_2": "bar",
...     "extra_field_3": "baz",
... }
>>> f = ContactForm(data)
>>> f.is_valid()
True
>>> f.cleaned_data  # Doesn't contain extra_field_1, etc.
{'cc_myself': True, 'message': 'Hi there', 'sender': 'foo@example.com', 'subject': 'hello'}

Nuair a bheidh an Foirm` bailí, cuimsíonn cleaned_data eochair agus luach d'all a réimsí, fiú mura raibh luach san áireamh sna sonraí do roinnt réimsí roghnacha. Sa sampla seo, ní chuimsíonn an foclóir sonraí luach don réimse nick_name, ach cuimsíonn ``cleaned_data ``é, le luach folamh:

Python console
>>> from django import forms
>>> class OptionalPersonForm(forms.Form):
...     first_name = forms.CharField()
...     last_name = forms.CharField()
...     nick_name = forms.CharField(required=False)
...
>>> data = {"first_name": "John", "last_name": "Lennon"}
>>> f = OptionalPersonForm(data)
>>> f.is_valid()
True
>>> f.cleaned_data
{'nick_name': '', 'first_name': 'John', 'last_name': 'Lennon'}

In this above example, the cleaned_data value for nick_name is set to an empty string, because nick_name is CharField, and CharFields treat empty values as an empty string. Each field type knows what its "blank" value is -- e.g., for DateField, it's None instead of the empty string. For full details on each field's behavior in this case, see the "Empty value" note for each field in the Ranganna ``Réimse ``tógtha section below.

Is féidir leat cód a scríobh chun bailíochtú a dhéanamh do réimsí foirme áirithe (bunaithe ar a n-ainm) nó don fhoirm ina iomláine (ag smaoineamh ar theaglaim de réimsí éagsúla). Tá tuilleadh faisnéise faoi seo in:doc: /ref/forms/validation.

Foirmeacha a chur amach mar HTMLLink to this heading

Is é an dara tasc atá ag réad Foirm é féin a rinneadh mar HTML. Chun é sin a dhéanamh, print é:

Python console
>>> f = ContactForm()
>>> print(f)
<div><label for="id_subject">Subject:</label><input type="text" name="subject" maxlength="100" required id="id_subject"></div>
<div><label for="id_message">Message:</label><input type="text" name="message" required id="id_message"></div>
<div><label for="id_sender">Sender:</label><input type="email" name="sender" required id="id_sender"></div>
<div><label for="id_cc_myself">Cc myself:</label><input type="checkbox" name="cc_myself" id="id_cc_myself"></div>

Má tá an fhoirm ceangailte le sonraí, cuirfear na sonraí sin san áireamh go cuí san aschur HTML. Mar shampla, má léirítear réimse le <input type="text">, beidh na sonraí sa tréith luach. Má léirítear réimse le `, ansin cuir <input type="checkbox">fidh an HTML sin ``seiceáil más cuí:

Python console
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> f = ContactForm(data)
>>> print(f)
<div><label for="id_subject">Subject:</label><input type="text" name="subject" value="hello" maxlength="100" required id="id_subject"></div>
<div><label for="id_message">Message:</label><input type="text" name="message" value="Hi there" required id="id_message"></div>
<div><label for="id_sender">Sender:</label><input type="email" name="sender" value="foo@example.com" required id="id_sender"></div>
<div><label for="id_cc_myself">Cc myself:</label><input type="checkbox" name="cc_myself" id="id_cc_myself" checked></div>

<div>Cumhdaíonn an t-aschur réamhshocraithe seo gach réimse le ```. Tabhair faoi deara a leanas:

  • <input type="submit">Maidir le solúbthacht, ní chuimsíonn an aschuir* na clibeanna ```` <form>agus ```` clib</form> ``. Is é do phost é sin a dhéanamh.

  • Tá ionadaíocht HTML réamhshocraithe ag gach cineál réimse. <input type="email">Léirítear charfield le ```` agus ``Ríomhphost le`` ```` ```` ```` ```` ` ```` ```` <input type="text">```` <input type="checkbox">Léirítear `BooleanField (Null=bréagach) ``le ``. Tabhair faoi deara nach bhfuil siad seo ach réamhshocruithe ciallmhara; is féidir leat a shonrú cén HTML atá le húsáid do réimse ar leith trí ghuirléidí a úsáid, a mhíneoimid go luath.

  • Tógtar an ainm ``HTML do gach clib go díreach óna ainm tréithe sa rang ``Contactform.

  • Gintear an lipéad téacs do gach réimse - m.sh. `'Ábhar: ', 'Teachtaireacht:' agus `Cc féin: ``, Gintear ó ainm an réimse trí gach béim a thiontú go spásanna agus an chéad litir a chosú uachtarach. Arís, tabhair faoi deara nach bhfuil siad seo ach réamhshocruithe ciallmhar; is féidir leat lipéid a shonrú de láimh freisin.

  • Tá gach lipéad téacs timpeallaithe i gclib HTML <label>, a chuireann in iúl don réimse foirme iomchuí trína id `. Gintear a id`, ina dhiaidh sin, trí id_' a réamhfheidhmiú chuig ainm an réimse. Cuirtear na tréithe id` agus na clibeanna <label> san áireamh san aschur de réir réamhshocraithe, chun dea-chleachtais a leanúint, ach is féidir leat an t-iompar sin a athrú.

  • Úsáideann an t-aschur comhréir HTML5, ag díriú ar <DOCTYPE html>. Mar shampla, úsáideann sé tréithe boolean mar checked seachas an stíl XHTML de ``checked='checked'`.

Cé gurb é as <div>chur `an stíl aschuir réamhshocraithe nuair a dhéanann foirm a phriontáil ``is féidir leat an t-aschur a shaincheapadh trí do theimpléad foirme féin a úsáid ar féidir a shocrú ar fud an láithreáin, in aghaidh foirme, nó in aghaidh na sampla. Féach:ref: `teimpléid foirm-athúsáid'.

Rindreáil réamhshocraiLink to this heading

Úsáideann an rindreáil réamhshocraithe nuair a dhéanann tú foirm “priontáil” na modhanna agus na tréithe seo a leanas.

ainmne_teimpléadLink to this heading

Form.template_nameLink to this definition

Ainm an teimpléid a rinneadh má theilgtear an fhoirm isteach i sreang, m.sh. trí priontáil (foirm) ``nó i dteimpléad trí {{form}} ``.

De réir réamhshocraithe, maoin ag filleadh luach an renderer's:attr: ~django.forms.renderers.baserenderer.form_template_name. Féadfaidh tú é a shocrú mar ainm teimpléad teaghrán d'fhonn é sin a shárú d'aicme foirme áirithe.

``render () ``Link to this heading

Form.render(template_name=None, context=None, renderer=None)Link to this definition

Tugtar __str__ ar an modh rindreála chomh maith leis na:meth: .form.as_div, :meth: .form.as_table, :meth: .form.as_p, agus:meth: .form.as_ul modhanna. Tá gach argóint roghnach agus réamhshocraithe:

  • ainm_teimpléad: :attr: .form.template_ainm

  • context: Luach ar ais ag: meth: .form.get_context

  • renderer: Luach ar ais ar:attr: .form.default_renderer

Trí template_name a rith is féidir leat an teimpléad a úsáidtear le haghaidh glao amháin a shaincheapadh.

``get_context () ``Link to this heading

Form.get_context()Link to this definition

Tabhair ar ais an gcomhthéacs teimpléid chun an fhoirm a rin

Is é an comhthéacs atá ar fáil:

  • foirm: An fhoirm cheangailte.

  • fields: Gach réimse ceangailte, seachas na réimsí i bhfolach.

  • hidden_fields: Gach réimse ceangailte i bhfolach.

  • ``earráidí ``: Gach earráid foirme neamh-bhaineann le réimse nó i bhfolach a bhaineann le réimse.

teimpléad_ainm_lipéadLink to this heading

Form.template_name_labelLink to this definition

An teimpléad a úsáidtear chun ``réimse a léiriú<label>, a úsáidtear nuair a ghlaoitear: meth: `BoundField.label_tag/:Meth: ~BoundField.LEGEND_TAG. Is féidir é a athrú in aghaidh an fhoirme tríd an tréith seo a shárú nó níos ginearálta tríd an teimpléad réamhshocraithe a shárú, féach freis:ref: overriding-built-in-form-templates.

Stíleanna aschuirLink to this heading

Is é an cur chuige a mholtar chun stíl aschuir foirme a athrú ná teimpléad foirme saincheaptha a shocrú ar fud an láithreáin, in aghaidh na foirme, nó in aghaidh an Féach:ref: reusable-form-templates le haghaidh samplaí.

Cuirtear na feidhmeanna cúntóra seo a leanas ar fáil le haghaidh comhoiriúnacht ar chúl agus is seachfhreastalaí iad chuig:meth: Form.render ag rith luach áirithe template_name.

Déanann gach cúntóir modh foirme le tréith a thugann an t-ainm teimpléid chuí.

``as_div () ``Link to this heading

Form.template_name_divLink to this definition

An teimpléad a úsáideann as_div () ``. Réamhshocraithe: ```django/forms/div.html'.

Form.as_div()Link to this definition

<div>Léiríonn as_div () ``an fhoirm mar shraith eilimintí , agus réimse amháin i ng <div>ach ``, mar shampla:

Python console
>>> f = ContactForm()
>>> f.as_div()

... tugann HTML cosúil le:

Html
<div>
<label for="id_subject">Subject:</label>
<input type="text" name="subject" maxlength="100" required id="id_subject">
</div>
<div>
<label for="id_message">Message:</label>
<input type="text" name="message" required id="id_message">
</div>
<div>
<label for="id_sender">Sender:</label>
<input type="email" name="sender" required id="id_sender">
</div>
<div>
<label for="id_cc_myself">Cc myself:</label>
<input type="checkbox" name="cc_myself" id="id_cc_myself">
</div>

``as_p () ``Link to this heading

Form.template_name_pLink to this definition

An teimpléad a úsáideann as_p () ``. Réamhshocraithe: ```django/forms/p.html'.

Form.as_p()Link to this definition

<p>Léiríonn as_p () ``an fhoirm mar shraith clibeanna , agus réimse amháin i <p>ngach ``:

Python console
>>> f = ContactForm()
>>> f.as_p()
'<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></p>\n<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></p>\n<p><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" required></p>\n<p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></p>'
>>> print(f.as_p())
<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></p>
<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></p>
<p><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></p>
<p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></p>

``as_ul () ``Link to this heading

Form.template_name_ulLink to this definition

An teimpléad a úsáideann as_ul () ``. Réamhshocraithe: ```django/forms/ul.html'.

Form.as_ul()Link to this definition

<li>Léiríonn as_ul () ``an fhoirm mar shraith clibeanna <li>, agus réimse amháin i ngach . <ul>Cuimsíonn ai*ní* an ``<ul>, ionas gur féidir leat aon tréithe HTML a shonrú ar</ul> an ```` le haghaidh solúbthachta:

Python console
>>> f = ContactForm()
>>> f.as_ul()
'<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></li>\n<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></li>\n<li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></li>\n<li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></li>'
>>> print(f.as_ul())
<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" required></li>
<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" required></li>
<li><label for="id_sender">Sender:</label> <input type="email" name="sender" id="id_sender" required></li>
<li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself"></li>

``as_table () ``Link to this heading

Form.template_name_tableLink to this definition

An teimpléad a úsáideann as_table () ``. Réamhshocraithe: ```django/forms/table.html'.

Form.as_table()Link to this definition

<table>Léiríonn as_table () ``an fhoirm mar HTML `:

Python console
>>> f = ContactForm()
>>> f.as_table()
'<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required></td></tr>\n<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required></td></tr>\n<tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required></td></tr>\n<tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself"></td></tr>'
>>> print(f.as_table())
<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" required></td></tr>
<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" required></td></tr>
<tr><th><label for="id_sender">Sender:</label></th><td><input type="email" name="sender" id="id_sender" required></td></tr>
<tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself"></td></tr>

Stíliú riachtanacha nó sraitheanna foirLink to this heading

Form.error_css_classLink to this definition
Form.required_css_classLink to this definition

Tá sé coitianta go leor sraitheanna agus réimsí a fhoirmiú atá ag teastáil nó a bhfuil earráidí acu. Mar shampla, b'fhéidir gur mhaith leat na sraitheanna foirme riachtanacha a chur i láthair i dtrom agus earráidí a aibhsiú

Tá cúpla crúca ag an rang:class: Form is féidir leat a úsáid chun tréithe class a chur leis na sraitheanna riachtanacha nó le sraitheanna le hearráidí: socraigh na tréithe: attr: Form.error_css_class agus/nó :attr: Form.required_css_class tréithe:

Code
from django import forms


class ContactForm(forms.Form):
    error_css_class = "error"
    required_css_class = "required"

    # ... and the rest of your fields here

Nuair a bheidh sé sin déanta agat, tabharfar ranganna "earráid" agus/nó "riachtana" sraitheanna, de réir mar is gá. Beidh cuma ar an HTML rud éigin cosúil le:

Python console
>>> f = ContactForm(data)
>>> print(f)
<div class="required"><label for="id_subject" class="required">Subject:</label> ...
<div class="required"><label for="id_message" class="required">Message:</label> ...
<div class="required"><label for="id_sender" class="required">Sender:</label> ...
<div><label for="id_cc_myself">Cc myself:</label> ...
>>> f["subject"].label_tag()
<label class="required" for="id_subject">Subject:</label>
>>> f["subject"].legend_tag()
<legend class="required" for="id_subject">Subject:</legend>
>>> f["subject"].label_tag(attrs={"class": "foo"})
<label for="id_subject" class="foo required">Subject:</label>
>>> f["subject"].legend_tag(attrs={"class": "foo"})
<legend for="id_subject" class="foo required">Subject:</legend>

You may further modify the rendering of form rows by using a custom BoundField.

<label>Eilimintí foirme a chumrú tréithe 'HTML id agus clibeanna ```Link to this heading

Form.auto_idLink to this definition

De réir réamhshocraithe, tá na modhanna rindreála foirme tá:

  • Tréithe HTML ``id ``ar na heilimintí foirme.

  • Na clibeanna comhfhreagracha <label>```timpeall na lipéid. Ainmníonn clib HTML <label>```cén téacs lipéad a bhaineann leis an eilimint foirme. Déanann an feabhsú beag seo foirmeacha níos inúsáidte agus níos inrochtana do ghléasanna cúnta. Is smaoineamh maith é i gcónaí clibeanna <label>```a úsáid.

Gintear na luachanna tréithe id trí id_` a réamhfheidhmiú chuig ainmneacha réimse na foirme. <label>Tá an t-iompar seo inchumraithe, áfach, más mian leat an coinbhinsiún id ``a athrú tréithe ``id HTML agus clibeanna ```` a bhaint go hiomlán.

Úsáid an argóint auto_id chuig an tógálaí Form ``chun an `id agus an iompar lipéad a rialú. Caithfidh an argóint seo a bheith True, Fréag` nó teaghrán.

<label>Más é auto_id False`, ansin ní bheidh clibeanna ```` ná tréithe ``id ``san áireamh sa aschur foirme:

Python console
>>> f = ContactForm(auto_id=False)
>>> print(f)
<div>Subject:<input type="text" name="subject" maxlength="100" required></div>
<div>Message:<textarea name="message" cols="40" rows="10" required></textarea></div>
<div>Sender:<input type="email" name="sender" required></div>
<div>Cc myself:<input type="checkbox" name="cc_myself"></div>

Má tá auto_id socraithe go True, ansin cuirfear clibeanna ```` san aschur foirme** agus úsáidfidh sé ainm an réimse mar a `id <label>``do gach réimse foirme:

Python console
>>> f = ContactForm(auto_id=True)
>>> print(f)
<div><label for="subject">Subject:</label><input type="text" name="subject" maxlength="100" required id="subject"></div>
<div><label for="message">Message:</label><textarea name="message" cols="40" rows="10" required id="message"></textarea></div>
<div><label for="sender">Sender:</label><input type="email" name="sender" required id="sender"></div>
<div><label for="cc_myself">Cc myself:</label><input type="checkbox" name="cc_myself" id="cc_myself"></div>

Má tá auto_id socraithe ar shreang ina bhfuil an carachtar formáide `%s', ansin beidh clibeanna ```` san aschur foirme, agus ginfidh sé tréithe id <label>``bunaithe ar an teaghrán formáide. Mar shampla, i gcás teaghrán formáide ```field_%s', gheobhaidh réimse darb ainm `subject an luach id `field_subject'. Leanúint lenár sampla:

Python console
>>> f = ContactForm(auto_id="id_for_%s")
>>> print(f)
<div><label for="id_for_subject">Subject:</label><input type="text" name="subject" maxlength="100" required id="id_for_subject"></div>
<div><label for="id_for_message">Message:</label><textarea name="message" cols="40" rows="10" required id="id_for_message"></textarea></div>
<div><label for="id_for_sender">Sender:</label><input type="email" name="sender" required id="id_for_sender"></div>
<div><label for="id_for_cc_myself">Cc myself:</label><input type="checkbox" name="cc_myself" id="id_for_cc_myself"></div>

Má tá auto_id` socraithe ar aon luach fíor eile -- mar shampla sreang nach bhfuil %s san áireamh -- ansin gníomhóidh an leabharlann amhail is dá mbeidh auto_id True.

De réir réamhshocraithe, socraítear auto_id go dtí an teaghrán 'id_%s'.

Form.label_suffixLink to this definition

Sreang inaistrithe (réamhshocraithe go colon (:) i mBéarla) a chuirfear isteach i ndiaidh aon ainm lipéad nuair a dhéantar foirm a léiriú.

Is féidir an carachtar sin a shaincheapadh, nó é a fhágáil go hiomlán, ag baint úsáide as an paraiméadar ``label_suffix`:

Python console
>>> f = ContactForm(auto_id="id_for_%s", label_suffix="")
>>> print(f)
<div><label for="id_for_subject">Subject</label><input type="text" name="subject" maxlength="100" required id="id_for_subject"></div>
<div><label for="id_for_message">Message</label><textarea name="message" cols="40" rows="10" required id="id_for_message"></textarea></div>
<div><label for="id_for_sender">Sender</label><input type="email" name="sender" required id="id_for_sender"></div>
<div><label for="id_for_cc_myself">Cc myself</label><input type="checkbox" name="cc_myself" id="id_for_cc_myself"></div>
>>> f = ContactForm(auto_id="id_for_%s", label_suffix=" ->")
>>> print(f)
<div><label for="id_for_subject">Subject -&gt;</label><input type="text" name="subject" maxlength="100" required id="id_for_subject"></div>
<div><label for="id_for_message">Message -&gt;</label><textarea name="message" cols="40" rows="10" required id="id_for_message"></textarea></div>
<div><label for="id_for_sender">Sender -&gt;</label><input type="email" name="sender" required id="id_for_sender"></div>
<div><label for="id_for_cc_myself">Cc myself -&gt;</label><input type="checkbox" name="cc_myself" id="id_for_cc_myself"></div>

Tabhair faoi deara nach gcuirtear iarmhír an lipéad leis ach mura carachtar poncaíochta é an carachtar deireanach den lipéad (i mBéarla, is iad sin ., ! ``,? : ``).

Is féidir le réimsí a gcuid féin a shainiú freisin: attr: ~django.forms.field.label_suffix. <django.forms.Form.label_suffix>Beidh tosaíocht aige seo thair:attr: form.label_suffix `. Is féidir an iarmhír a shárú freisin ag rith ag baint úsáide as an paraiméadar ``label_suffix` to:meth: ~django.forms.boundfield.label_tag/:Meth: ~django.forms.boundfield.legend_tag.

Form.use_required_attributeLink to this definition

Nuair a bheidh sé socraithe go True (an réamhshocraithe), beidh an tréith HTML riachtanaithe ag réimsí foirme riachtanacha.

Formsets instantiate forms with use_required_attribute=False to avoid incorrect browser validation when adding and deleting forms from a formset.

Rindreáil giuirléidí foirme a chumrúLink to this heading

Form.default_rendererLink to this definition

Sonraíonn sé an:doc: renderer <renderers>`le húsáid don fhoirm. Réamhshocraithe go ``None` rud a chiallaíonn an rindeoir réamhshocraithe a shonraítear leis an socrú:setting: FORM_RENDER a úsáid.

Is féidir leat é seo a shocrú mar thréith aicme agus tú ag dearbhú d'fhoirm nó an argóint renderer a úsáid chuig Foirm. __init__ () `. Mar shampla:

Code
from django import forms


class MyForm(forms.Form):
    default_renderer = MyRenderer()

nó:

Code
form = MyForm(renderer=MyRenderer())

Nótaí ar ordú allamuighLink to this heading

Sna aicearraí as_p () ``, `as_ul () agus as_table () ``, taispeántar na réimsí san ord ina sainmhíníonn iad i do rang foirme. Mar shampla, sa sampla ``Foirm Teagmhála, sainmhínítear na réimsí san ord ábhar ``, `teachtaireacht, seoltóir `, cc_myself`. Chun an t-aschur HTML a athordú, athraigh an t-ord ina bhfuil na réimsí sin liostaithe sa rang.

Tá roinnt bealaí eile ann chun an t-ordú a shaincheapadh:

Form.field_orderLink to this definition

De réir réamhshocraithe form.field_order=None, a choimeádann an t-ord ina sainmhíníonn tú na réimsí i do rang foirme. Más liosta d'ainmneacha réimsí é field_order`, ordaítear na réimsí mar a shonraíonn an liosta agus cuirtear réimsí eile leis an ordú réamhshocraithe. Déantar neamhaird ar ainmneacha réimse anaithnid sa liosta Fágann sé seo gur féidir réimse i bhfo-aicme a dhíchumasú tríd é a shocrú go ``None ``gan ordú a athshainiú.

Is féidir leat an argóint Form.field_Order a úsáid chuig a:class: Form chun an t-ordú réimse a shárú. Má shainmhíníonn a:class: ~django.forms.form: attr: ~form.field_order agus chuimsíonn tú field_order nuair a chuirtear an Form` i bhfeidhm, ansin beidh tosaíocht ag an field_ord` deireanach.

Form.order_fields(field_order)Link to this definition

Féadfaidh tú na réimsí a athshocrú am ar bith ag baint úsáide as ``order_fields () ``le liosta ainmneacha réimse mar atá in:attr: ~django.forms.form.field_order.

Conas a thaispeántar earráidíLink to this heading

If you render a bound Form object, the act of rendering will automatically run the form's validation if it hasn't already happened, and the HTML output will include the validation errors as a <ul class="errorlist">.

The following:

Python console
>>> data = {
...     "subject": "",
...     "message": "Hi there",
...     "sender": "invalid email address",
...     "cc_myself": True,
... }
>>> ContactForm(data).as_div()

... tugann HTML cosúil le:

Html
<div>
  <label for="id_subject">Subject:</label>
  <ul class="errorlist" id="id_subject_error"><li>This field is required.</li></ul>
  <input type="text" name="subject" maxlength="100" required aria-invalid="true" aria-describedby="id_subject_error" id="id_subject">
</div>
<div>
  <label for="id_message">Message:</label>
  <textarea name="message" cols="40" rows="10" required id="id_message">Hi there</textarea>
</div>
<div>
  <label for="id_sender">Sender:</label>
  <ul class="errorlist" id="id_sender_error"><li>Enter a valid email address.</li></ul>
  <input type="email" name="sender" value="invalid email address" maxlength="320" required aria-invalid="true" aria-describedby="id_sender_error" id="id_sender">
</div>
<div>
    <label for="id_cc_myself">Cc myself:</label>
    <input type="checkbox" name="cc_myself" id="id_cc_myself" checked>
</div>

Django's default form templates will associate validation errors with their input by using the aria-describedby HTML attribute when the field has an auto_id and a custom aria-describedby is not provided. If a custom aria-describedby is set when defining the widget this will override the default value.

If the widget is rendered in a <fieldset> then aria-describedby is added to this element, otherwise it is added to the widget's HTML element (e.g. <input>).

Formáid an liosta earráide a shaincheapadhLink to this heading

class ErrorList(initlist=None, error_class=None, renderer=None, field_id=None)Link to this definition

De réir réamhshocraithe, úsáideann foirmeacha Django.Forms.Utils.ErrorList chun earráidí bailíochtaithe a fhormáidiú. Is liosta cosúil le réad é ErrorList ina bhfuil initlist liosta na n-earráidí. Ina theannta sin tá na tréithe agus na modhanna seo a leanas ag an rang seo a leanas.

error_classLink to this definition

Na ranganna CSS le húsáid agus an liosta earráide á rindreáil. Cuirtear aon ranganna a chuirtear ar fáil leis an rang réamhshocraithe earrlista.

rendererLink to this definition

Sonraíonn sé an: doc: renderer <renderers>`le húsáid le haghaidh ``ErrorLiost`. Réamhshocraithe go None rud a chiallaíonn an rindeoir réamhshocraithe a shonraítear leis an socrú:setting: FORM_RENDER a úsáid.

field_idLink to this definition

An id for the field for which the errors relate. This allows an HTML id attribute to be added in the error template and is useful to associate the errors with the field. The default template uses the format id="{{ field_id }}_error" and a value is provided by Form.add_error() using the field's auto_id.

template_nameLink to this definition

Ainm an teimpléid a úsáidtear agus tú ag glaoch ar __str__ nó:meth: render. De réir réamhshocraithe is é seo django/forms/errors/list/default.html' atá ina seachfhreastalaí don teimpléad `ul.html'.

template_name_textLink to this definition

Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_text. De réir réamhshocraithe is é seo django/forms/errors/list/text.html'. Déanann an teimpléad seo na hearráidí mar liosta de phointí piléar.

template_name_ulLink to this definition

Ainm an teimpléid a úsáidtear agus tú ag glaoch: meth: .as_ul. De réir réamhshocraithe is é seo django/forms/errors/list/ul.html'. Déanann an teimpléad seo na hearráidí i gclibeanna `le timfhilleadh<li> ``leis na ranganna <ul>CSS mar a shainmhínítear ar:attr: .error_class.

get_context()Link to this definition

Comhthéacs ar ais chun earráidí a rindreáil i dteimpléad.

Is é an comhthéacs atá ar fáil:

  • ``earráidí ``: Liosta de na hearráidí.

  • error_class: Sraith ranganna CSS.

render(template_name=None, context=None, renderer=None)Link to this definition

Tugtar __str__ ar an modh rindreála chomh maith leis an modh:meth: .as_ul.

Tá na hargóintí go léir roghnach agus beidh siad réamhshocraithe:

  • template_name: Luach ar ais ag: attr: .template_name

  • context: Luach ar ais ag: meth: .get_context

  • renderer: Luach ar ais ar:attr: .renderer

as_text()Link to this definition

Déanann sé an liosta earráide ag baint úsáide as an teimpléad atá sainmhínithe ar:attr: .template_name_text.

as_ul()Link to this definition

Déanann sé an liosta earráide ag baint úsáide as an teimpléad atá sainmhínithe ar:attr: .template_name_ul.

Más mian leat rindreáil earráidí a shaincheapadh is féidir é seo a bhaint amach tríd an tréith: attr: .template_name a shárú nó níos ginearálta tríd an teimpléad réamhshocraithe a shárú, féach freis:ref: overriding-built-in-form-templates.

Níos mó aschur gráinneachLink to this heading

Is aicearraí iad na modhanna as_p () ``, `as_ul (), agus ``as_table () ``- ní hé sin an t-aon bhealach is féidir réad foirme a thaispeáint.

class BoundFieldLink to this definition

Úsáidtear chun tréithe HTML nó rochtana a thaispeáint do réimse amháin de shampla a:class: Form.

Taispeánann modh ``__str__ () ``an réada seo an HTML don réimse seo.

You can use Form.bound_field_class and Field.bound_field_class to specify a different BoundField class per form or per field, respectively.

See Saincheapadh Boundfield for examples of overriding a BoundField.

Chun ``Boundfield` amháin a aisghabháil, bain úsáid as comhréiteach cuardaigh foclóra ar d'fhoirm ag baint úsáide as ainm an réimse mar eochair:

Python console
>>> form = ContactForm()
>>> print(form["subject"])
<input id="id_subject" type="text" name="subject" maxlength="100" required>

Chun gach rud ``Boundfield` a aisghabháil, athraigh an fhoirm:

Python console
>>> form = ContactForm()
>>> for boundfield in form:
...     print(boundfield)
...
<input id="id_subject" type="text" name="subject" maxlength="100" required>
<input type="text" name="message" id="id_message" required>
<input type="email" name="sender" id="id_sender" required>
<input type="checkbox" name="cc_myself" id="id_cc_myself">

Tugann an t-aschur réimsi-shonrach onóir socrú auto_id réad foirme:

Python console
>>> f = ContactForm(auto_id=False)
>>> print(f["message"])
<input type="text" name="message" required>
>>> f = ContactForm(auto_id="id_%s")
>>> print(f["message"])
<input type="text" name="message" id="id_message" required>

Tréithe BoundfieldLink to this heading

BoundField.aria_describedbyLink to this definition

Returns an aria-describedby reference to associate a field with its help text and errors. Returns None if aria-describedby is set in Widget.attrs to preserve the user defined attribute when rendering the form.

BoundField.auto_idLink to this definition

An tréith ID HTML don BoundField` seo. Tugann teaghrán folamh ar ais má tá: attr: Form.auto_id False.

BoundField.dataLink to this definition

Tugann an maoin seo na sonraí don seo: class: ~django.forms.BoundField a bhaintear ag an modh giuirléid 's:meth: ~django.forms.widget.value_from_datadict, nó None mura dtugadh é:

Python console
>>> unbound_form = ContactForm()
>>> print(unbound_form["subject"].data)
None
>>> bound_form = ContactForm(data={"subject": "My Subject"})
>>> print(bound_form["subject"].data)
My Subject
BoundField.errorsLink to this definition

<ul class="errorlist">A: Ref: réad cosúil le liosta <ref-forms-error-list-format>`a thaispeántar mar HTML `` nuair a bheidh clóite:

Python console
>>> data = {"subject": "hi", "message": "", "sender": "", "cc_myself": ""}
>>> f = ContactForm(data, auto_id=False)
>>> print(f["message"])
<input type="text" name="message" required aria-invalid="true">
>>> f["message"].errors
['This field is required.']
>>> print(f["message"].errors)
<ul class="errorlist"><li>This field is required.</li></ul>
>>> f["subject"].errors
[]
>>> print(f["subject"].errors)

>>> str(f["subject"].errors)
''

Agus réimse á rindreáil le hearráidí, socraítear aria-invalid="true" ar ghuirléid an réimse chun a léiriú go bhfuil earráid ann d'úsáideoirí léitheoirí scáileáin.

BoundField.fieldLink to this definition

An sampla foirm:class: ~django.forms.field ón rang foirm a fhilleann seo:class: ~django.forms.boundfield.

BoundField.formLink to this definition

Tá an sampla:Class: ~django.forms.form ceangailte leis seo: class: ~Django.Forms.BoundField.

BoundField.help_textLink to this definition

An: attr: ~django.forms.field.help_text an réimse.

BoundField.html_nameLink to this definition

An t-ainm a úsáidfear i dtréith HTML ``ainm ``an ghuirléid. Cuireann sé an fhoirm: attr: ~django.forms.form.prefix san áireamh.

BoundField.id_for_labelLink to this definition

Úsáid an maoin seo chun aitheantas an réimse seo a léiriú. Mar shampla, má tá ``á thógáil de láimh agat i do the <label>impléad (in ainneoin go ndéanfaidh: meth: `~BoundField.label_tag/:Meth: ~BoundField.Legend_Tag é seo duit):

Django template
<label for="{{ form.my_field.id_for_label }}">...</label>{{ my_field }}

De réir réamhshocraithe, is é seo ainm an réimse réamhshocraithe le id_ (“id_my_field`” don sampla thuas). Féadfaidh tú an ID a mhodhnú trí:attr: ~django.forms.widget.attrs ar ghuirléid an réimse. Mar shampla, réimse mar seo a dhearbhú:

Code
my_field = forms.CharField(widget=forms.TextInput(attrs={"id": "myFIELD"}))

agus ag baint úsáide as an teimpléad thuas, déanfaí rud éigin mar:

Html
<label for="myFIELD">...</label><input id="myFIELD" type="text" name="my_field" required>
BoundField.initialLink to this definition

Úsáid: attr: BoundField.initial chun sonraí tosaigh a aisghabháil do réimse foirme. Aisghabhann sé na sonraí ó:attr: Form.initial má tá sé i láthair, ar shlí eile iarracht: attr: Field.initial. Déantar luachanna inghlaonta a mheas. Féach:ref: ref-forms-initial-form-values le haghaidh tuilleadh samplaí.

BoundField.initial caches its return value, which is useful especially when dealing with callables whose return values can change (e.g. datetime.now or uuid.uuid4):

Python console
>>> from datetime import datetime
>>> class DatedCommentForm(CommentForm):
...     created = forms.DateTimeField(initial=datetime.now)
...
>>> f = DatedCommentForm()
>>> f["created"].initial
datetime.datetime(2021, 7, 27, 9, 5, 54)
>>> f["created"].initial
datetime.datetime(2021, 7, 27, 9, 5, 54)

Moltar úsáid: attr: BoundField.initial thar: meth: `~form.get_initial_for_field () `.

BoundField.is_hiddenLink to this definition

Tugann sé ar ais True má tá giuirléid seo:class: ~django.forms.BoundField i bhfolach.

BoundField.labelLink to this definition

An: Attr: ~django.forms.field.label an réimse. Úsáidtear é seo in:meth: ~BoundField.label_tag/:Meth: ~BoundField.LEGEND_TAG.

BoundField.nameLink to this definition

Ainm an réimse seo sa fhoirm:

Python console
>>> f = ContactForm()
>>> print(f["subject"].name)
subject
>>> print(f["message"].name)
message
BoundField.template_nameLink to this definition

Ainm an teimpléid a rinneadh le:meth: .BoundField.as_Field_Group.

Maoin ag tugadh luach an:attr: ~django.forms.field.template_name má tá sé socraithe ar bhealach eile: attr: ~django.forms.renderers.baserenderer.field_template_name.

BoundField.use_fieldsetLink to this definition

Tugann luach tréith use_fieldset ghuirléid BoundField seo ar ais.

BoundField.widget_typeLink to this definition

Tugann ainm aicme íseal giuirléid an réimse fillte ar ais, agus baintear aon inputgiuirléid `. Féadfar é seo a úsáid agus foirmeacha á thógáil ina bhfuil an leagan amach ag brath ar an gcineál giuirléid. Mar shampla:

Django template
{% for field in form %}
    {% if field.widget_type == 'checkbox' %}
        # render one way
    {% else %}
        # render another way
    {% endif %}
{% endfor %}

Modhanna BoundfieldLink to this heading

BoundField.as_field_group()Link to this definition

Déanann sé an réimse ag baint úsáide:meth: .BoundField.render le luachanna réamhshocraithe a thugann an BoundField`, lena n-áirítear a lipéad, téacs cabhrach agus earráidí ag baint úsáide as an teimpléad's:attr: ~django.forms.renderers.baserender.field.template_name má shocraítear ar arís eile: attr: ~django.forms.renderers.baserenderer.field.field.field.field.field_Teimpléad_ainm

BoundField.as_hidden(attrs=None, **kwargs)Link to this definition

Tugann sé sreang HTML ar ais chun é seo a léiriú mar <input type="hidden">```.

Cuirtear ``**kwargs ``chuig: meth: ~django.forms.boundfield.as_widget.

Úsáidtear an modh seo go domhanda go hinmheánach. Ba chóir duit giuirléid a úsáid ina ionad.

BoundField.as_widget(widget=None, attrs=None, only_initial=False)Link to this definition

Déanann sé an réimse tríd an giuirléid a rith a rindreáil, ag cur aon tréithe HTML a rith mar attrs. Mura sonraítear aon ghuirléid, ansin úsáidfear giuirléid réamhshocraithe an réimse.

Úsáideann inmheánacha Django only_initial agus níor cheart é a shocrú go sainráite.

BoundField.css_classes(extra_classes=None)Link to this definition

Nuair a úsáideann tú aicearraí rindreála Django, úsáidtear ranganna CSS chun réimsí nó réimsí foirme riachtanacha ina bhfuil earráidí a léiriú. Má tá foirm á rindreáil agat de láimh, is féidir leat rochtain a fháil ar na ranganna CSS seo ag baint úsáide as an modh css_classes:

Python console
>>> f = ContactForm(data={"message": ""})
>>> f["message"].css_classes()
'required'

Más mian leat roinnt ranganna breise a sholáthar i dteannta leis an earráid agus na ranganna riachtanacha a d'fhéadfadh a bheith ag teastáil, is féidir leat na ranganna sin a sholáthar mar argóint:

Python console
>>> f = ContactForm(data={"message": ""})
>>> f["message"].css_classes("foo bar")
'foo bar required'
BoundField.get_context()Link to this definition

Tabhair ar ais an gcomhthéacs teimpléid chun an réimse a rin Is é an comhthéacs atá ar fáil ná “réimse” mar shampla an réimse ceangailte.

BoundField.label_tag(contents=None, attrs=None, label_suffix=None, tag=None)Link to this definition

Déanann sé clib lipéad don réimse foirme ag baint úsáide as an teimpléad a shonraítear ar:attr: .form.template_name_label.

Is é an comhthéacs atá ar fáil:

  • field: An cás seo den :class: Boundfield.

  • contents: De réir réamhshocraithe teaghrán comhcheangailte de:attr: BoundField.label agus:attr: Form.label_suffix (nó:attr: Field.label_suffix, má tá sé socraithe). Is féidir leis na hargóintí contents agus label_suffix a shárú é seo.

  • attrs: dict ina bhfuil for,: attr: Form.requred_CSS_Class, agus id. Gintear id ``ag giuirléid an réimse ``attrs nó:attr: BoundField.auto_id. Is féidir tréithe breise a sholáthar leis an argóint attrs.

  • use_tag: Boolean atá True má tá id` ag an lipéad. Má tá False fágann an teimpléad réamhshocraithe an ``tag ``.

  • tag: Sreang roghnach chun an chlib a shaincheapadh, réamhshocraithe go lipéad.

Chun clib lipéad réimse foirme a léiriú ar leithligh, is féidir leat a mhodh ``label_tag () `a ghlaoch:

Python console
>>> f = ContactForm(data={"message": ""})
>>> print(f["message"].label_tag())
<label for="id_message">Message:</label>

Más mian leat an rindreáil a shaincheapadh is féidir é seo a bhaint amach tríd an tréith: attr: .form.template_name_label a shárú nó níos ginearálta tríd an teimpléad réamhshocraithe a shárú, féach freis:ref: overriding-built-in-form-templates.

BoundField.legend_tag(contents=None, attrs=None, label_suffix=None)Link to this definition

<legend>Glaonna: Meth: .label_tag le tag = 'legend' chun clibeanna `a rinneadh an lipéad. <label>Tá seo úsáideach agus giuirléidí raidió agus bosca seiceála iolracha á rindreáil ina bhféad <legend>fadh ```a bheith níos oiriúnaí ná` `.

BoundField.render(template_name=None, context=None, renderer=None)Link to this definition

Tugtar ``as_field_group ``ar an modh rindreála. Tá gach argóint roghnach agus réamhshocraithe:

  • ainm_teimpléad: :attr: .BoundField.Template_Ainm

  • context: Luach ar ais ag: meth: .boundfield.get_context

  • renderer: Luach ar ais ar:attr: .form.default_renderer

Trí template_name a rith is féidir leat an teimpléad a úsáidtear le haghaidh glao amháin a shaincheapadh.

BoundField.value()Link to this definition

Úsáid an modh seo chun amluach an réimse seo a léiriú mar a dhéanfadh “Giuirléid” é:

Python console
>>> initial = {"subject": "welcome"}
>>> unbound_form = ContactForm(initial=initial)
>>> bound_form = ContactForm(data={"subject": "hi"}, initial=initial)
>>> print(unbound_form["subject"].value())
welcome
>>> print(bound_form["subject"].value())
hi

Saincheapadh BoundfieldLink to this heading

Form.bound_field_classLink to this definition

Define a custom BoundField class to use when rendering the form. This takes precedence over the project-level BaseRenderer.bound_field_class (along with a custom FORM_RENDERER), but can be overridden by the field-level Field.bound_field_class.

If not defined as a class variable, bound_field_class can be set via the bound_field_class argument in the Form or Field constructor.

For compatibility reasons, a custom form field can still override Field.get_bound_field() to use a custom class, though any of the previous options are preferred.

You may want to use a custom BoundField if you need to access some additional information about a form field in a template and using a subclass of Field isn't sufficient.

For example, if you have a GPSCoordinatesField, and want to be able to access additional information about the coordinates in a template, this could be implemented as follows:

Code
class GPSCoordinatesBoundField(BoundField):
    @property
    def country(self):
        """
        Return the country the coordinates lie in or None if it can't be
        determined.
        """
        value = self.value()
        if value:
            return get_country_from_coordinates(value)
        else:
            return None


class GPSCoordinatesField(Field):
    bound_field_class = GPSCoordinatesBoundField

Anois is féidir leat rochtain a fháil ar an tír i dteimpléad le {{form.coordinates.country}}.

You may also want to customize the default form field template rendering. For example, you can override BoundField.label_tag() to add a custom class:

Code
class StyledLabelBoundField(BoundField):
    def label_tag(self, contents=None, attrs=None, label_suffix=None, tag=None):
        attrs = attrs or {}
        attrs["class"] = "wide"
        return super().label_tag(contents, attrs, label_suffix, tag)


class UserForm(forms.Form):
    bound_field_class = StyledLabelBoundField
    name = CharField()

This would update the default form rendering:

Python console
>>> f = UserForm()
>>> print(f["name"].label_tag)
<label for="id_name" class="wide">Name:</label>

To add a CSS class to the wrapping HTML element of all fields, a BoundField can be overridden to return a different collection of CSS classes:

Code
class WrappedBoundField(BoundField):
    def css_classes(self, extra_classes=None):
        parent_css_classes = super().css_classes(extra_classes)
        return f"field-class {parent_css_classes}".strip()


class UserForm(forms.Form):
    bound_field_class = WrappedBoundField
    name = CharField()

This would update the form rendering as follows:

Python console
>>> f = UserForm()
>>> print(f)
<div class="field-class"><label for="id_name">Name:</label><input type="text" name="name" required id="id_name"></div>

Alternatively, to override the BoundField class at the project level, BaseRenderer.bound_field_class can be defined on a custom FORM_RENDERER:

mysite/renderers.py
Python
from django.forms.renderers import DjangoTemplates

from .forms import CustomBoundField


class CustomRenderer(DjangoTemplates):
    bound_field_class = CustomBoundField
settings.py
Python
FORM_RENDERER = "mysite.renderers.CustomRenderer"

Comhaid uaslódaithe a cheangal le foirmLink to this heading

Tá sé beagán níos casta déileáil le foirmeacha a bhfuil réimsí Filefield agus Imagefield ná gnáthfhoirm.

Ar dtús, d'fhonn comhaid a uaslódáil, beidh ort a chinntiú go sainmhíníonn d'eilimint ```` an enctype` i gceart mar <form>```"multipart/form-sona"``:

Html
<form enctype="multipart/form-data" method="post" action="/foo/">

Ar an dara dul síos, nuair a úsáideann tú an fhoirm, ní mór duit na sonraí comhad a cheangal. Láimhseálfar sonraí comhaid ar leithligh le gnáthshonraí foirme, mar sin nuair a bhíonn FileField` agus ImageField i d'fhoirm, beidh ort an dara argóint a shonrú nuair a cheanglaíonn tú d'fhoirm. Mar sin má leathnaímid ár bhFoirm Teagmhála chun ImageField ar a dtugtar ``mugshot ``a áireamh, ní mór dúinn na sonraí comhaid ina bhfuil an íomhá mugshot a cheangal:

Python console
# Bound form with an image field
>>> from django.core.files.uploadedfile import SimpleUploadedFile
>>> data = {
...     "subject": "hello",
...     "message": "Hi there",
...     "sender": "foo@example.com",
...     "cc_myself": True,
... }
>>> file_data = {"mugshot": SimpleUploadedFile("face.jpg", b"file data")}
>>> f = ContactFormWithMugshot(data, file_data)

Go praiticiúil, de ghnáth sonróidh tú Request.Files mar fhoinse sonraí comhad (díreach mar a úsáideann tú Request.post mar fhoinse sonraí foirme):

Python console
# Bound form with an image field, data from the request
>>> f = ContactFormWithMugshot(request.POST, request.FILES)

Tá foirm neamhcheangailte a thógáil mar an gcéanna agus i gcónaí - fág an dá shonraí foirme* agus* sonraí comhaid:

Python console
# Unbound form with an image field
>>> f = ContactFormWithMugshot()

Tástáil le haghaidh foirmeacha ilpháirteachLink to this heading

Form.is_multipart()Link to this definition

Má tá tuairimí nó teimpléid in-athúsáidte á scríobh agat, b'fhéidir nach bhfuil a fhios agat roimh am an bhfoirm ilpháirteach í d'fhoirm nó nach bhfuil. Insíonn an modh ``is_multipart () ``duit an bhfuil ionchódú ilpháirteach ag teastáil ón bhfoirm le haghaidh aighneachta:

Python console
>>> f = ContactFormWithMugshot()
>>> f.is_multipart()
True

Seo sampla den chaoi a bhféadfá é seo a úsáid i dteimpléad:

Django template
{% if form.is_multipart %}
    <form enctype="multipart/form-data" method="post" action="/foo/">
{% else %}
    <form method="post" action="/foo/">
{% endif %}
{{ form }}
</form>

Foirmeacha fo-aicmitheLink to this heading

Má tá iliomad ranganna Foirme agat a roinneann réimsí, is féidir leat fo-aicmiú a úsáid chun iomarcaíocht a bhaint.

Nuair a dhéanann tú rang saincheaptha ``Foirm ``a fho-aicmiú, beidh gach réimse den tuismitheoir aicme (anna) san fho-aicme mar thoradh air, agus na réimsí a shainmhíníonn tú sa fho-aicme ina dhiaidh sin.

Sa sampla seo, tá na réimsí go léir ó ContactFormWithPriority`, móide réimse breise, priority. Déantar na réimsí Teagmhála` a ordú ar dtús:

Python console
>>> class ContactFormWithPriority(ContactForm):
...     priority = forms.CharField()
...
>>> f = ContactFormWithPriority(auto_id=False)
>>> print(f)
<div>Subject:<input type="text" name="subject" maxlength="100" required></div>
<div>Message:<textarea name="message" cols="40" rows="10" required></textarea></div>
<div>Sender:<input type="email" name="sender" required></div>
<div>Cc myself:<input type="checkbox" name="cc_myself"></div>
<div>Priority:<input type="text" name="priority" required></div>

Is féidir foirmeacha iolracha a fho-aicmiú, ag caitheamh le foirmeacha mar mheascáin. Sa sampla seo, tá fo-aicmí Beatleform agus InstrumentForm araon (san ord sin), agus cuimsíonn a liosta réimsí na réimsí ó na tuismitheoireachtaí:

Python console
>>> from django import forms
>>> class PersonForm(forms.Form):
...     first_name = forms.CharField()
...     last_name = forms.CharField()
...
>>> class InstrumentForm(forms.Form):
...     instrument = forms.CharField()
...
>>> class BeatleForm(InstrumentForm, PersonForm):
...     haircut_type = forms.CharField()
...
>>> b = BeatleForm(auto_id=False)
>>> print(b)
<div>First name:<input type="text" name="first_name" required></div>
<div>Last name:<input type="text" name="last_name" required></div>
<div>Instrument:<input type="text" name="instrument" required></div>
<div>Haircut type:<input type="text" name="haircut_type" required></div>

Is féidir Field a bhaint go dearbhaithe ó rang tuismitheoirí trí ainm an réimse a shocrú go ``None ``ar an bhfo-aicme. Mar shampla:

Python console
>>> from django import forms

>>> class ParentForm(forms.Form):
...     name = forms.CharField()
...     age = forms.IntegerField()
...

>>> class ChildForm(ParentForm):
...     name = None
...

>>> list(ChildForm().fields)
['age']

Réamhréamhacha le haghaidh foirmeachaLink to this heading

Form.prefixLink to this definition

Is féidir leat roinnt foirmeacha Django a chur taobh istigh de chlib <form> amháin. Chun a spás ainmneacha féin a thabhairt do gach Form, bain úsáid as an argóint eochairfhocal ``prefix`:

Python console
>>> mother = PersonForm(prefix="mother")
>>> father = PersonForm(prefix="father")
>>> print(mother)
<div><label for="id_mother-first_name">First name:</label><input type="text" name="mother-first_name" required id="id_mother-first_name"></div>
<div><label for="id_mother-last_name">Last name:</label><input type="text" name="mother-last_name" required id="id_mother-last_name"></div>
>>> print(father)
<div><label for="id_father-first_name">First name:</label><input type="text" name="father-first_name" required id="id_father-first_name"></div>
<div><label for="id_father-last_name">Last name:</label><input type="text" name="father-last_name" required id="id_father-last_name"></div>

Is féidir an réimír a shonrú freisin ar an rang foirme:

Python console
>>> class PersonForm(forms.Form):
...     ...
...     prefix = "person"
...