在我的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中看到,然后在这个目录中发生的一切。因此,预处理会对上传的文件进行收费,然后再将其导出。
我希望这一切尽可能清楚,谢谢你的帮助。
在这样的会话中存储csvFilename名称:
request.session['file']=csvFilename
你可以在任何你想要的地方使用这个会话。
csvFilename =request.session['file']