如何在Django中的另一个python脚本中使用上传的文件名

问题描述 投票:0回答:1

在我的Django“来源”项目中,我有“公告”应用程序。我有一个视图“model_form_upload”,当我上传它时,我在其中获得上传的文件名(“csvFilename”)。

views.朋友

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”,它在我的csv文件上实现了一堆pandas-dataframe转换。

pretreatment.朋友

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

models.朋友

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

我的csvFilename将始终是这种类型的字符串:“Ernageyyyymm.csv”。

我的问题是:如何从views.model_form_upload函数中收集我的csvFilename变量,以便在预处理python脚本变量“csvFileToTreat”和“txtExportFilePath”中使用它的日期信息。

这两个类型为“path / Ernage {0} {1} .format(yearToTreat,monthToTreat)。

因为我每个月都要使用它,所以我希望将文件上传到media/METEO ERNAGE/{0}/{1}".format(yearNumber,monthNumber),你可以在FileField upload_to中看到,然后在这个目录中发生的一切。因此,预处理会对上传的文件进行收费,然后再将其导出。

我希望这一切尽可能清楚,谢谢你的帮助。

python django file-upload parameter-passing
1个回答
0
投票

在这样的会话中存储csvFilename名称:

request.session['file']=csvFilename 

你可以在任何你想要的地方使用这个会话。

 csvFilename =request.session['file']
© www.soinside.com 2019 - 2024. All rights reserved.