0
我正在使用Django表單來驗證特定的註冊頁面。該表被設置爲這樣:爲什麼我的Django表單模板刪除空格後的所有數據?
class MemberForm(forms.Form):
email = forms.EmailField(label='Email', required=True)
password = forms.RegexField(label='Password', widget=forms.PasswordInput, required=True, regex=r'^(?=.*[A-Za-z])(?=.*\d)[\S]{8,}$')
confirm_password = forms.CharField(label='Confirm Password', widget=forms.PasswordInput, required=True)
full_name = forms.CharField(label='Full Name', required=True)
pref_name = forms.CharField(label='Preferred Name', required=False)
phone = forms.RegexField(label='Phone', regex=r'^\+?1?\d{9,15}$', required=True)
address = forms.CharField(label='Address', required=True)
city = forms.CharField(label='City', required=True)
provinces = forms.ChoiceField(label='Provinces', choices=PROVINCE_CHOICES, required=True)
postal_code = forms.RegexField(label='Postal Code', regex=r'^([A-Z][0-9][A-Z]\s[0-9][A-Z][0-9])$')
dob = forms.DateField(label='Birthday', required=True)
occupation = forms.CharField(label='Occupation', required=True)
一切都在這方面做工精細,形式接受一切它應該和拒絕一切它應該。如果表單無效,我再次渲染它。這一切都在以下視圖中完成:
def create_member(request):
form = forms.MemberForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
#redirect
provinces = Provinces.objects.all()
return render(request, 'party/adminCreateAccount2.html', {'form': form, 'provinces': provinces, 'today': str(now_date())})
因此,如果表單無效,我只需保留在頁面上並重新使用當前表單。但是,當表單重新加載時,出於某種原因,具有空間的所有數據將在顯示空間後擦除所有空間。例如,如果我使用'測試測試'作爲我的全名,那麼將所有其他部分留空,當頁面重新加載時,我只會看到'測試'。
使用下面的自定義模板顯示我的形式:
{% for field in form %}
<div class="form-row grp-row grp-cells-1 {{ field.html_name }}">
<div class="field-box l-2c-fluid l-d-4">
<div class="c-1">
<label {% if field.field.required %} class="required" {% endif %} for={{ field.html_name }}>{{ field.label }}</label>
</div>
<div class="c-2">
<input class="vTextField" type="text" name={{ field.html_name }} id={{ field.html_name }} value={{ field.data|default_if_none:"" }}>
</div>
</div>
</div>
{% endfor %}
我試圖輸出{{ field.data|default_if_none:"" }}
輸入正確的旁邊,它顯示(在我們的例子「測試測試」)的整個字符串,所以我完全是因爲難倒我知道正確的數據正在通過。任何想法爲什麼它被改變的輸入值?
這就是我最初嘗試的,但總是默認顯示'<輸入'而不是任何東西。任何理由爲什麼它可能會這樣做? – Written
我的意思是你應該使用它來代替整個輸入標籤。您可以在表單定義中添加額外的html類。 –