Как создать оповещение из модели представления

Я хочу проверить файл на валидность. Если файл недействителен, я хочу обновить страницу и сообщить пользователю, что он не загрузил правильный файл. Итак, у меня есть следующее в моем

views/campaign.py

try:
    wb = load_workbook(mp_file)
except BadZipfile:
    return redirect('campaign_add', client_id)

Единственный известный мне способ сделать это - добавить еще один атрибут в класс клиента, который будет

is_error(models.BooleanField())

Затем измените просмотры/кампанию на

try:
    client.is_error = False   
    wb = load_workbook(mp_file)
    client.save()
except BadZipfile:
    client.is_error = True
    client.save()
    return redirect('campaign_add', client)

А с помощью другого атрибута я могу добавить в файл campaign.html что-то вроде if is.error is true, то есть добавить какое-то окно с информацией о плохом файле после перезагрузки страницы. Но есть ли способ сделать это без добавления другого атрибута?

Ок, давайте представим, что ответ немного сложнее, чем вы ожидали.

Современные пользовательские интерфейсы не перезагружают страницы только для того, чтобы сообщить о некоторых ошибках ввода или загрузки данных пользователем.

Так что же является наилучшим пользовательским опытом здесь?

  1. Пользователь загружает некоторый файл(ы) со страницы.
  2. Вы отправляете файл через JavaScript на специальную конечную точку API для этой загрузки. Допустим, /workbook/uploads/. Вам необходимо создать обработчик для этой конечной точки (представления)
  3. Конечная точка возвращает 200 OK с пустым телом при успехе или ошибку, допустим 400 Bad Request с подробным JSON в теле, чтобы показать пользователю, что не так.
  4. Вы разбираете ответы на JavaScript и показываете пользователю, что не так
  5. .

Обновления не требуются. 🙌

Но для конкретного ответа потребуется больше кода из вашей реализации. (view, urls, template)

Вернуться на верх