在我的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脚本“ preprocessing.py”,可对csv文件进行一堆pandas-dataframe转换。
preprocessing.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”。
我的问题是:我如何从views.model_form_upload函数中收集我的csvFilename变量,以便在预处理python脚本变量“ csvFileToTreat”和“ txtExportFilePath”中使用其日期信息。
这两个类型的类型为“路径/Ernage{0}{1}.format(yearToTreat,monthToTreat)。
由于我每个月都必须使用它,因此我希望将文件上传到media/METEO ERNAGE/{0}/{1}".format(yearNumber,monthNumber)
中,就像您在FileField upload_to中看到的那样,然后此目录中发生的一切。因此,预处理会对上载的文件收费,然后再将其导出。
我希望所有这些都尽可能清楚,谢谢您的帮助。
答案 0 :(得分:0)
在这样的会话中存储csvFilename名称:
request.session['file']=csvFilename
,您可以在任何需要的地方使用此会话。
csvFilename =request.session['file']