Как показать пользовательские ошибки проверки формы Django в виде стандартных всплывающих окон

У меня есть следующая пользовательская проверка формы:

forms.py

import os
from django.core.exceptions import ValidationError

def validate_allegato(allegato):
    ext = os.path.splitext(allegato.name)[1]
    valid_extensions = [ '.pdf']
    if not ext.lower() in valid_extensions:
        raise ValidationError(u'Unsupported file extension.')

class MyForm(forms.Form):
  allegato = forms.FileField(required=False, validators=[validate_allegato])

В шаблоне я хотел бы показать ValidationError как стандартные всплывающие окна HTML (как «Пожалуйста, заполните это поле»).

Является ли это возможным?

заранее спасибо


person user123892    schedule 01.02.2019    source источник
comment
Я думаю, что для этой цели проще проверить во внешнем интерфейсе. Если вы хотите вызвать ошибку проверки впереди, вы можете использовать javascript.   -  person seuling    schedule 01.02.2019
comment
@seuling: спасибо за подсказку, но мне интересно, смогу ли я решить проблему, используя только python/html   -  person user123892    schedule 01.02.2019


Ответы (1)


Решение 1: отобразите сообщение об ошибке в своем шаблоне, а не вызывайте ошибку.

Решение 2. Вы можете перезаписать метод Form.clean() в своем классе формы, и вся проверка должна выполняться внутри этого метода. Вы можете использовать метод Form.add_error() для отображения сообщения об ошибке. Документ: https://docs.djangoproject.com/en/2.1/ref/forms/api/

person JiaWie Lu    schedule 01.02.2019