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:
>>> 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:
>>> 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:
>>> 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:
>>> 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í:
>>> 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ó`:
>>> 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:
>>> 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.
>>> 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.
>>> 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. Má tá tú á ú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 tú ag iarraidh a bheith cinnte go n-éalóidh tú 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:
>>> 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:
>>> 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:
>>> 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):
>>> 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.
>>> 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:
>>> 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.
>>> 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:
>>> 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ú:
>>> 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:
>>> 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 ``, nó 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`:
>>> 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 Charfield nó Emailfield - 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 ``:
>>> 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`:
>>> 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:
>>> 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 é:
>>> 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í:
>>> 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 ````
nó 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
charfieldle ````agus ``Ríomhphostle`` ```` ```` ```` ````````` ```` <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 mé 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 marcheckedseachas an stíl XHTML de ``checked='checked'`.
Cé gurb é as <div>chur `an stíl aschuir réamhshocraithe nuair a dhéanann tú 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_ainmcontext: Luach ar ais ag: meth: .form.get_contextrenderer: 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:
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:
>>> f = ContactForm()
>>> f.as_div()
... tugann HTML cosúil le:
<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 ``:
>>> 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 `` nó <ul>, ionas gur féidir leat aon tréithe HTML a shonrú ar</ul> an ```` le haghaidh solúbthachta:
>>> 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 `:
>>> 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:
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:
>>> 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.
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:
from django import forms
class MyForm(forms.Form):
default_renderer = MyRenderer()
nó:
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 tú 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:
>>> data = {
... "subject": "",
... "message": "Hi there",
... "sender": "invalid email address",
... "cc_myself": True,
... }
>>> ContactForm(data).as_div()
... tugann HTML cosúil le:
<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.ErrorListchun earráidí bailíochtaithe a fhormáidiú. Is liosta cosúil le réad éErrorListina bhfuilinitlistliosta 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
Nonerud 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
idfor the field for which the errors relate. This allows an HTMLidattribute to be added in the error template and is useful to associate the errors with the field. The default template uses the formatid="{{ field_id }}_error"and a value is provided byForm.add_error()using the field'sauto_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 é seodjango/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:
- 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_namecontext: Luach ar ais ag: meth: .get_contextrenderer: 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_classandField.bound_field_classto specify a differentBoundFieldclass 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:
>>> 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:
>>> 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:
>>> 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-describedbyreference to associate a field with its help text and errors. ReturnsNoneifaria-describedbyis set inWidget.attrsto 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ó
Nonemura dtugadh é:>>> 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:
>>> 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):
<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ú: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:
<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.initialcaches its return value, which is useful especially when dealing with callables whose return values can change (e.g.datetime.noworuuid.uuid4):>>> 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 () `.
Tugann sé ar ais
Truemá 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:
>>> 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_fieldsetghuirlé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
inputnógiuirlé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:{% 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
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_initialagus 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:
>>> 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:
>>> 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ícontentsaguslabel_suffixa shárú é seo.attrs:dictina bhfuilfor,: attr: Form.requred_CSS_Class, agusid. Gintearid ``ag giuirléid an réimse ``attrsnó:attr: BoundField.auto_id. Is féidir tréithe breise a sholáthar leis an argóintattrs.use_tag: Boolean atáTruemá tá id` ag an lipéad. Má táFalsefágann an teimpléad réamhshocraithe an ``tag ``.tag: Sreang roghnach chun an chlib a shaincheapadh, réamhshocraithe golipéad.
Chun clib lipéad réimse foirme a léiriú ar leithligh, is féidir leat a mhodh ``label_tag () `a ghlaoch:
>>> 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á sé 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_Ainmcontext: Luach ar ais ag: meth: .boundfield.get_contextrenderer: Luach ar ais ar:attr: .form.default_renderer
Trí
template_namea 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” é:
>>> 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:
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:
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:
>>> 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:
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:
>>> 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.pyfrom django.forms.renderers import DjangoTemplates
from .forms import CustomBoundField
class CustomRenderer(DjangoTemplates):
bound_field_class = CustomBoundField
settings.pyFORM_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"``:
<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:
# 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):
# 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:
# 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:
>>> f = ContactFormWithMugshot()
>>> f.is_multipart()
True
Seo sampla den chaoi a bhféadfá é seo a úsáid i dteimpléad:
{% 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:
>>> 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í:
>>> 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:
>>> 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`:
>>> 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:
>>> class PersonForm(forms.Form):
... ...
... prefix = "person"
...