Django-проверка на стороне клиента формы regexvalidator не работает - PullRequest
0 голосов
/ 20 июня 2019

Я реализовал форму + модель Django, которую я хотел бы проверить на стороне клиента.Каждое ограничение проверяется полностью, как и ожидалось, за исключением RegexValidator.Само регулярное выражение прекрасно работает как в Python, так и в JS.Я считаю, что проблема в том, что валидация не распространяется от модели / формы Джанго к переднему слою.Т.е. проверка регулярного выражения на стороне клиента даже не начинается.

Я нашел много подобных вопросов здесь, но ни один из ответов не помогает.Например, здесь люди советуют использовать EmailValidator (не может, поскольку это не электронная почта или любое другое специализированное поле), используя петрушка (я уже использую django-angular это, вероятно, противоречит), или подтвердите в HTML (я действительно хотел бы придерживаться принципа СУХОЙ). Написание собственного валидатора или параметры именования тоже не помогают.

Есть ли способ как проверить 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>
...