私は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)
すべてが、この点では正常に動作している、フォームは、それが必要すべてを受け入れ、それが必要すべてを拒否します。フォームが無効な場合は、再度レンダリングします。これはすべて次のビューで行われます。
フォームが有効でない場合、私は単にページに留まり、現在のフォームを再利用します。しかし、フォームがリロードされると、何らかの理由でスペースがあるすべてのデータが表示されたときにスペースの後のすべてが消去されます。
たとえば、「Test Test」を私のフルネームとして使用し、それ以外のものを空白のままにしておくと、ページがリロードされたときに「Test」と表示されます。
私のフォームは、次のカスタムテンプレートを使用して表示されます。
{% 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
私はあなたが 'input'タグ全体の代わりにそれを使うべきであることを意味しました。余分なhtmlクラスをフォーム定義自体に追加することができます。 –