Ich baue meine eigene Website mit Django's Framework. Ich habe ein Formular zum Erstellen eines neuen Kontos erstellt. Es funktioniert gut, aber ich habe ein Problem mit meinen Fehlermeldungen.Django-Formulare: Fehlermeldung wird ständig angezeigt, nicht nur nach Fehlern
Alle meine Fehler werden bereits angezeigt, wenn ich zum ersten Mal auf der Seite ankomme. Wenn nach dem Senden ein Feld falsch ist, werden auf der neu aktualisierten Seite nur die gewünschten Nachrichten angezeigt.
Here is a view of my page at my first arrival
Also, meine Frage ist: Wie kann ich für die Anzeige tun, um die Nachricht nur dann, wenn ein Feld ist falsch? Es gelingt mir bereits, jede Nachricht zu personalisieren.
ich fügen Sie meine verschiedenen django Dateien:
views.py
@csrf_exempt
def create_new_user(request):
form = UserCreateForm(request.POST)
if request.method=="POST":
if form.is_valid():
user = form.save()
messages.info(request, "Merci pour votre enregistrement, vous etes maintenant connecte")
new_user = authenticate(username=form.cleaned_data['username'],
password=form.cleaned_data['password1']
)
login(request, new_user)
return HttpResponseRedirect('/')
return render_to_response('lejeudesbars/register.html', RequestContext(request, {'form': form}))
else:
return render(request, 'lejeudesbars/register.html', {'form': form})
forms.py
class UserCreateForm(UserCreationForm):
captcha = ReCaptchaField(error_messages={'required': 'Captcha: Validation obligatoire'})
email = forms.EmailField(required=True)
username = forms.CharField(error_messages={'required': 'Pseudo: Champ obligatoire'})
email = forms.EmailField(error_messages={'required': 'Email: Champ obligatoire'})
password1 = forms.CharField(widget=forms.PasswordInput(), error_messages={'required': 'Mot de passe: Champ obligatoire'})
password2 = forms.CharField(widget=forms.PasswordInput(), error_messages={'required': 'Mot de passe: Confirmation obligatoire'})
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user`
index.html
<form method="post" action="/accounts/register/">
{% csrf_token %}
<h1>S'enregistrer</h1>
{{ form.username }}
{% if form.errors %}
<p class="error-msg-register">{{ form.username.errors }}</p>
{% endif %}
{{ form.email }}
{% if form.errors %}
<p class="error-msg-register">{{ form.email.errors }}</p>
{% endif %}
{{ form.password1 }}
{% if form.errors %}
<p class="error-msg-register">{{ form.password1.errors }}</p>
{% endif %}
{{ form.password2 }}
{% if form.errors %}
<p class="error-msg-register">{{ form.password2.errors }}</p>
{% endif %}
{{ form.captcha }}
{% if form.errors %}
<p class="error-msg-register">{{ form.captcha.errors }}</p>
{% endif %}
<input style="padding: 10px" type="submit" value="Créer mon compte" />
<input type="hidden" name="next" value="{{ next }}" />
</form>`
Vielen Dank im Voraus für Ihre Hilfe!
(sorry für mein schlechtes Englisch)
Dank Daniel Roseman, habe ich mein Problem gelöst. Hier ist meine aktualisiert views.py:
views.py
@csrf_exempt
def create_new_user(request):
if request.method=="POST":
form = UserCreateForm(request.POST)
if form.is_valid():
user = form.save()
messages.info(request, "Merci pour votre enregistrement, vous etes maintenant connecte")
new_user = authenticate(username=form.cleaned_data['username'],
password=form.cleaned_data['password1']
)
login(request, new_user)
else:
form = UserCreateForm()
return render(request, 'lejeudesbars/register.html', {'form': form})
Es hat nicht funktioniert .. Aber dank Daniel Roseman, habe ich meinen Fehler herausgefunden :) –