當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Django Field.initial用法及代碼示例


本文介紹 django.forms.Field.initial 的用法。

聲明

Field.initial

initial 參數允許您指定在未綁定的 Form 中呈現此 Field 時要使用的初始值。

要指定動態初始數據,請參閱 Form.initial 參數。

用例是當您想要顯示一個“empty” 表單時,其中一個字段被初始化為一個特定的值。例如:

>>> from django import forms
>>> class CommentForm(forms.Form):
...     name = forms.CharField(initial='Your name')
...     url = forms.URLField(initial='http://')
...     comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
>>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
<tr><th>Url:</th><td><input type="url" name="url" value="http://" required></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" required></td></tr>

您可能在想,為什麽不在顯示表單時將初始值的字典作為數據傳遞呢?好吧,如果您這樣做,您將觸發驗證,並且 HTML 輸出將包含任何驗證錯誤:

>>> class CommentForm(forms.Form):
...     name = forms.CharField()
...     url = forms.URLField()
...     comment = forms.CharField()
>>> default_data = {'name': 'Your name', 'url': 'http://'}
>>> f = CommentForm(default_data, auto_id=False)
>>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" required></td></tr>
<tr><th>Url:</th><td><ul class="errorlist"><li>Enter a valid URL.</li></ul><input type="url" name="url" value="http://" required></td></tr>
<tr><th>Comment:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="comment" required></td></tr>

這就是為什麽 initial 值僅顯示未綁定表單的原因。對於綁定表單,HTML 輸出將使用綁定數據。

另請注意,如果未給出特定字段的值,initial 值是在驗證中用作 “fallback” 數據的 notinitial 值是 only 用於初始表單顯示:

>>> class CommentForm(forms.Form):
...     name = forms.CharField(initial='Your name')
...     url = forms.URLField(initial='http://')
...     comment = forms.CharField()
>>> data = {'name': '', 'url': '', 'comment': 'Foo'}
>>> f = CommentForm(data)
>>> f.is_valid()
False
# The form does *not* fall back to using the initial values.
>>> f.errors
{'url': ['This field is required.'], 'name': ['This field is required.']}

除了常量,您還可以傳遞任何可調用對象:

>>> import datetime
>>> class DateForm(forms.Form):
...     day = forms.DateField(initial=datetime.date.today)
>>> print(DateForm())
<tr><th>Day:</th><td><input type="text" name="day" value="12/23/2008" required><td></tr>

隻有在顯示未綁定的表單時才會評估可調用對象,而不是在定義時評估。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.forms.Field.initial。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。