Вывод ошибки не связанной с валидацией формы
Никак не могу понять как выводить ошибку не связанную с валидацией формы, т.е. форма прошла валидацию но во время "обработки" файлов в "merge_files" произошла ошибка.
Как показать ошибку не прерывая работу view, а так же избежать повторной загрузки файлов при F5(т.е. если убрать redirect, отработает render и покажет все что необходимо, но тогда возникает проблема с F5)!?
Если делать redirect как в примере, то ошибку не получить.
forms.py
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50, required=False)
file1 = forms.FileField()
file2 = forms.FileField()
def clean_file1(self):
validate_file(self.cleaned_data['file1'])
def clean_file2(self):
validate_file(self.cleaned_data['file2'])
views.py
app_name = 'base'
def uploadFile(request):
data = {}
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
data['form'] = form
if form.is_valid():
file1 = request.FILES['file1']
file2 = request.FILES['file2']
merge_files(file1, file2, data)
return redirect(f'{app_name}:index-base')
else:
data['form'] = UploadFileForm()
return render(request, template, data)
def merge_files(file1, file2, data):
try:
# ...
except Exception as ex:
data['ErrorMessage'] = f'Ошибка слияния файлов: {ex}'
Возможно я вообще сбился с пути и файлы надо проверять при валидации формы и писать все ошибки в ValidationError.
Вообще цель следующая:
- Получить файлы
- Проверить что файлы имеют правильное расширение, тип и т.д.
- Обработать файлы
3.1. Если при обработке возникла ошибка, показать ее и продолжить выполнять view. - Показать форму загрузки(если есть ошибки их так же показать)
- Показать таблицу с загруженными фалами(ошибочными в том числе).