Django: Изменение данных excel и загрузка ppt

В настоящее время я сталкиваюсь с проблемой при развертывании:

Я создал приложение, в котором я ввожу локальный путь к файлу excel, а затем, используя sample_code.py (показанный ниже), создаю отчет в pptx в той же папке, где находится файл excel.

Подведем итоги:

  • Я ввожу текст в форму, текст - это мой путь к файлу excel
  • .
  • Я нажимаю кнопку, которая запускает мой скрипт sample_code.py
  • Создается отчет ppt

Почему это не работает при развертывании на heroku, и как я могу это улучшить?

EDIT: моя идея заключалась в том, чтобы загрузить статический файл в некоторую папку media/excel_files и создать pptx в папке media/pptx_files. проблема в том, что я не уверен, как указать этот путь в моем скрипте sample_code.py. Чем загрузить pptx.

Мои файлы views.py выглядят следующим образом:

from django.shortcuts import render
import sys
from subprocess import run, PIPE

# Create your views here.
def button(request):
    return render(request,'home.html')

def external(request):
    inp=request.POST.get('param')
    out=run([sys.executable,'E:\\project_deployement\\sample_code.py',inp],shell=False,stdout=PIPE)
    print(out)
    return render(request,'home.html',{'data1':out.stdout.decode('utf-8')})

urls.py

from django.urls import path
from . import views

urlpatterns = [
        path('', views.button),
        path('external/', views.external),
]

а файл home.html выглядит следующим образом

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Work Script</title>
  </head>
  <body>
    <form action="/external/" method="post">
      {% csrf_token %}
      Input Path:
      <input type="text" name="param" required><br><br>
      {{ data_external }}
      <input type="submit" value="Generate Toplines">
    </form>
  </body>
</html>

последним важным шагом является sample_code.py

from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches
import pandas as pd
import sys


path = "%s" % (sys.argv[1])

pr1 = Presentation()

slide2_reg = pr1.slide_layouts[0]

slide2 = pr1.slides.add_slide(slide2_reg)

title2 = slide2.shapes.title
title2.text = "slide 1"

slide1_reg = pr1.slide_layouts[5]

slide1 = pr1.slides.add_slide(slide1_reg)

title1 = slide1.shapes.title
title1.text = "slide 2"

df = pd.read_excel (path+'sample_data.xlsx')
df = df.groupby('Product')['variable_x'].mean()

chart_data = CategoryChartData()
chart_data.categories = list(df.index)[0], list(df.index)[1] #gets string categories
chart_data.add_series('variable_x', (df.iat[0], df.iat[1])) #gets integer values

x, y, cx, cy = Inches(1), Inches(1), Inches(2), Inches(2.5)
slide1.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

pr1.save(path+'presentation.pptx')
Вернуться на верх