Как вызвать несколько функций с одним полем в django?

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

Это views.py

def mmy_view(request):
    if request.method == "POST":
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            output = io.BytesIO()
            newdoc = request.FILES['docfile']
            dfs = pd.read_excel(newdoc, sheet_name=None, index_col=[0])
            writer = pd.ExcelWriter(output)
            for name, df in dfs.items():
                #padnas code
                qoutput.to_excel(writer, sheet_name=name)

            html = qoutput.to_html()
            writer.save()
            output.seek(0)
            return render(request, 'list.html', {'table': html})
    else:
        form = DocumentForm()
    return render(request, 'list.html', {'form': form})


def mmmy_view(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = Document(docfile=request.FILES['docfile'])
            newdoc.save()
            return redirect('mmmy-view')
    else:
        form = DocumentForm()
    documents = Document.objects.all()
    context = {'documents': documents, 'form': form}
    return render(request, 'list.html', context)

Я предполагаю, что она всегда вызывает функцию mmy_view. Поэтому вы можете следовать приведенному ниже фрагменту кода:

Код:

def mmy_view(request):
    ...
    ...
    ...
    # yon can call other function like this before return
    mmmy_view(request)
    

Делая это, вы столкнетесь с одной новой проблемой - какую функцию return render(request, 'list.html', {'form': form}) вы будете использовать. Будет лучше переосмыслить поток запросов и построить свои функции в соответствии с ним.

Поскольку у меня нет полного представления о структуре вашего проекта, я могу что-то упустить.

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