fugro
@fugro
Начинающий кодер

Как обрабатывать исключения ValueError и ValidationError в Django?

Всем привет!

Есть джанго приложение, не rest. В сервисном слое, где обрабатывается пользовательский файл, выбрасываются исключения со своим текстом.
Типа:
if column_name not it data_columns:
    raise ValueError("Упс... Столбец {} отсутствует в талице".format(column_name))

Вопрос: как вернуть это сообщение пользователю в html шаблон?

Подскажите или направьте на источник. Везде только обработка ошибок формы.

views.py
def index(request):
    if request.method == "POST":
        excel_file = request.FILES["excel_file"] 
        df = read_file_to_df(excel_file) # парсинг файла 
        file_url = write_to_excel(df)

        context = {"file_url": file_url}
        return render(request, 'calcdist/index.html', context)


def read_file_to_df(file):
    data = pd.read_excel(file)
    if column_name not in data.columns:
        raise ValueError("Упс... В твоем файле не найден столбец {}".format(column_name))
    return data
  • Вопрос задан
  • 596 просмотров
Пригласить эксперта
Ответы на вопрос 1
fugro
@fugro Автор вопроса
Начинающий кодер
Ответ для себя нашел здесь

ValueError и ValidationError идут с ошибкой сервера 500.
Кастомный меседж можно получить через sys.exc_info()
error_type - тип ошибки
tb - трейсбек

def server_error(request):
    import sys, traceback

    error_type, error, tb = sys.exc_info()

    context = {
        'error_message': error
    }

    response = render_to_response('calcdist/index.html', context)
    response.status_code = 500
    return response
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы