Bir iletişim formu (bu nedenle model tabanlı bir form kullanmıyor) oluşturuyorum ve e-posta alanma bir regex doğrulayıcı ekledikten sonra, aşağıdaki sorunla karşılaşıyorum: eklediğim özel hata mesajı şimdi iki kez görüntüleniyor. Bu, 'bir şey' gibi bir e-posta girdiğimde (normal ifadeyle eşleşmiyor veya varsayılan '@' sembolüne sahip olduğumda olur - '@' sembolünü eklerseniz, yalnızca bir mesaj görünür).Django - geçerlilik denetleyicileri kullanırken iki kez gösteren hata iletisi
Emin değilim, ama django'nun varsayılan doğrulamasını tahmin ediyorum + benim özel onayım bundan sorumludur, bu yüzden merak ediyorum (eğer sorun buysa), aynı iletinin gösterilmesini engellemek için ne yapabilirim? iki kere yukarı
Teşekkürler!
forms.py: 'Bu benim e-posta hata msg' O
from django import forms
from django.core.validators import RegexValidator
class ContactForm(forms.Form):
full_name = forms.CharField(required=True)
email = forms.EmailField(validators=[RegexValidator(regex=r'^\[email protected]([[email protected]_]+)(\.[[email protected]_]+)+\b')]
, error_messages={'invalid': 'This is my email error msg.'})
message = forms.CharField(widget=forms.Textarea)
defalarca gösterilmesini biridir »örn: * Bu benim e-posta hata msg * Bu benim e-posta hata msg
olduğuviews.py:
def contact(request):
form = ContactForm(request.POST or None)
context = {"form":form}
if form.is_valid():
form_name = form.cleaned_data.get("full_name")
form_email = form.cleaned_data.get("email")
form_message = form.cleaned_data.get("message")
subject = "Message from %s (%s)" % (form_name, form_email)
from_email = form_email
to_email = ['myemail',]
contact_message = form_message
send_mail(subject, contact_message, from_email, to_email, fail_silently=False)
context = {"form":form,"thanks_msg": "Thank you!"}
return render(request, 'contact.html', context)
şablonu:
<form action="" method="POST" class="form"> {% csrf_token %}
{% for field in form %}
<div class="fields-container">
<label class="label">{{ field.label }}</label>
{{ field }}
</div>
<p class="server-form-errors"> {{ field.errors.as_text }} </p>
{% endfor %}
<button type="submit" id="form-button">Submit</button>
</form>
Olası kopyalar (http://stackoverflow.com/questions/3217682/checking-validity-of-email-in-django-python) – Sayse
kullanmayın Neden yerleşik [EmailValidator] (https://docs.djangoproject.com/en/1.9/ref/validators/#emailvalidator)? – Sayse
Gönderdiğiniz konuya bakıyorum ama yinelenen doğrulama mesajları, yalnızca farklı doğrulama yöntemleri hakkında sözler bulamıyorum: S Regexvalidator ve emailvalidator arasındaki farklara bakacağım, ama bence sorun regex validasyonum başarısız olduğunda (yani, bir eşleşme yok) ve '@' sembolünü eklemediğimde bu çifte hata mesajını aldığım için hala orada olacağım, bu yüzden sadece iki tane tekleme olduğunu düşünüyorum. Bu olduğunda bir mesaj istiyorum. – Acla