我已经实现了我想在客户端进行验证的Django model + form。除RegexValidator外,所有约束均按预期完美验证。正则表达式本身可以在Python和JS中正常工作。我认为问题在于验证不会从Django的模型/表单传播到顶层。即客户端正则表达式的验证甚至没有开始。
我在这里发现了很多类似的问题,但是所有答案都无济于事。例如,here个人使用EmailValidator(因为它不是电子邮件或任何其他专业字段,所以不能),parsley(我已经使用过django-angular可能会合谋)来提供建议或进行验证HTML(我真的很想保留DRY原则)。 Writing my own validator或naming parameters也不起作用。
有没有办法在没有第三方库的情况下在客户端验证RegexValidator?
# models.py
class Contact(models.Model):
firstname = models.CharField(max_length=254)
lastname = models.CharField(max_length=254)
address = models.CharField(max_length=254)
email = models.EmailField(max_length=254)
phone_regex = RegexValidator(regex=r'^\+\d{8,15}$', message="Phone number must be entered in the format: '+99999999'. Up to 15 digits allowed.")
phone = models.CharField(max_length=16, validators=[phone_regex])
# forms.py
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = ('firstname', 'lastname', 'address', 'email', 'phone')
# views.py
class ContactFormView(FormView):
template_name = 'contact_add.html'
form_class = ContactForm
<!-- contact_add.html -->
<form>
{{ form }}
<button type="submit" class="btn" ng-click="addContact()">Add contact</button>
</form>