Как использовать загруженное имя файла в другом скрипте Python в Django - PullRequest
0 голосов
/ 30 апреля 2019

В моем проекте Django «Источники» у меня есть приложение «Бюллетени».У меня есть представление "model_form_upload", внутри которого я получаю имя загруженного файла ("csvFilename"), когда я загружаю его.

views.py

from bulletins.forms import ErnageForm
from bulletins.models import ErnageModel
from bulletins.pretreatment import pretreatment

def model_form_upload(request):
    if request.method == 'POST':
        form = ErnageForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            for filename, file in request.FILES.items():
                csvFilename = file.name
            resultPretreatment = pretreatment()
            print(resultPretreatment)
            return redirect('proceed_FT')
        else:
            return redirect('upload_fail')
    else:
        form = ErnageForm()
    return render(request, 'bulletins/upload_csv.html', {'form': form})

Кроме этого, у меня есть сценарий python "pretreatment.py", который выполняет несколько преобразований pandas-dataframe в моем файле csv.

pretreatment.py

def pretreatment(csvFileToTreat="..."
#... all the transformations with pandas dataframes...
df.to_csv(txtExportFilePath, index=False, header=None, sep='\t')

models.py

class ErnageModel(models.Model):
    csv = models.FileField(upload_to="METEO ERNAGE/{0}/{1}".format(yearToTreat,monthToTreat))

Мое имя csvFilename всегда будет строкой этого типа: "Ernageyyyymm.csv".

Мой вопрос здесь такой: как я могу собрать мою переменную csvFilename из функции views.model_form_upload, чтобы использовать информацию о ее дате в переменных сценария python предварительной обработки "csvFileToTreat" и "txtExportFilePath".

Эти два типа имеют тип "path / Ernage {0} {1} .format (yearToTreat, monthToTreat).

Поскольку я должен использовать его каждый месяц, я хотел бы загружать свои файлы в media/METEO ERNAGE/{0}/{1}".format(yearNumber,monthNumber), как вы можете видеть в FileField upload_to, а затем все, что происходит в этом каталоге. Таким образом, предварительная обработка заряжает загруженный файл, а затем экспортирует в него также.

Надеюсь, все это как можно более ясно, спасибоза вашу помощь.

1 Ответ

0 голосов
/ 30 апреля 2019

сохраните имя csvFilename в сеансе следующим образом:

request.session['file']=csvFilename 

, и вы можете использовать этот сеанс в любое время, когда захотите.

 csvFilename =request.session['file']
...