Ich verwende ein Django-Formular, um eine bestimmte Anmeldeseite zu validieren. Das Formular wird als so ein:Warum entfernt meine Django-Formularvorlage alle Daten nach einem Leerzeichen?
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)
Alles funktioniert in dieser Hinsicht gut, nimmt die Form alles, was es soll, und lehnt alles, was es sein sollte. Wenn das Formular ungültig ist, rendere ich es erneut. Dies alles wird in der folgenden Ansicht getan:
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())})
Also, wenn die Form nicht gültig ist, habe ich einfach auf der Seite bleiben und die aktuelle Form wiederverwenden. Wenn das Formular jedoch aus irgendeinem Grund neu geladen wird, werden alle Daten mit einem Leerzeichen nach dem Leerzeichen gelöscht, wenn es angezeigt wird.
Zum Beispiel, wenn ich 'Test Test' als meinen vollständigen Namen benutze, dann lasse alles andere leer, wenn die Seite neu geladen wird, sehe ich nur 'Test'.
ist meine Form angezeigt die folgende benutzerdefinierte Vorlage:
{% 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 %}
Ich versuchte {{ field.data|default_if_none:"" }}
direkt neben dem Eingang zum Ausgeben und die gesamte Zeichenfolge (‚Test-Test‘ in unserem Beispiel) angezeigt, so dass ich ganz da stapfte Ich weiß, dass die richtigen Daten durchgeleitet werden. Irgendeine Idee, warum es für den Eingangswert geändert wird?
Das ist, was ich ursprünglich versuchte, aber immer standardmäßig "
Written
Ich meinte, Sie sollten das anstelle des ganzen 'input' Tags verwenden. Sie können die zusätzliche HTML-Klasse in der Formulardefinition selbst hinzufügen. –