Django : не удается прервать функцию обновления с помощью редиректа. Возможно ли это?

Я использую функцию для обновления Модели.

def update_mapping(request, pk):
    flow = Flow.objects.get(pk=pk)
    mappings = MappingField.objects.filter(fl_id=pk)
    headers_samples = GetCsvHeadersAndSamples(request, pk)
    [...]

В этой функции я вызываю другую (GetCsvHeadersAndSamples) для получения данных из CSV. Позже я использую эти данные с помощью JS в шаблоне.

def GetCsvHeadersAndSamples(request, flow_id):
    get_file_and_attribs = get_csv(request, flow_id)
    file = get_file_and_attribs[0]
    separator = get_file_and_attribs[1]
    encoding = get_file_and_attribs[2]
    with open(file, encoding=encoding) as f:
        reader = csv.reader(f, delimiter=separator)
        headers = next(reader)
        samples = next(itertools.islice(csv.reader(f), 1, None))
    headersAndSamples = {'headers': headers, 'samples': samples}
    return headersAndSamples

Для доступа к данным CSV я использую другую функцию для проверки, существует ли еще CSV, в этом случае я извлекаю данные из него.

def get_csv(request, flow_id):
    flow = Flow.objects.get(pk=flow_id)
    file = flow.fl_file_name
    separator = flow.fl_separator
    media_folder = settings.MEDIA_ROOT
    file = os.path.join(media_folder, str(file))
    if os.path.isfile(file):
        file_2_test = urllib.request.urlopen('file://' + file).read()
        encoding = (chardet.detect(file_2_test))['encoding']
        return (file, separator, encoding)
    else:
        # print('No file')
        messages.error(request, "File not found or corrupted.")
        return HttpResponseRedirect(reverse('mappings-list', args=(flow_id,)))

Я надеялся, что возврат "сломает" мою первоначальную функцию и перенаправит на страницу 'mappings-list' с сообщением.error. Но она продолжается и возвращается к функции GetCsvHeadersAndSamples, которая выдает ошибку, поскольку данные CSV не найдены. Замечание: закомментированный print однако хорошо показывает, что файл не найден.

Похоже, что мой способ действий не самый лучший.

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