2017-05-22 56 views
0

上传文件夹中的csv文件,现在我想让这些文件在python中传递一个列表来生成pdf。我如何在django中调用这个文件,或者有更好的方法来做到这一点?如何在django中上传文件并传递给函数

这是我上传的文件:

def subir_archivos(request): 
    if request.method == 'POST' and request.FILES['myfile']: 
      myfile = request.FILES['myfile'] 
      fs = FileSystemStorage() 
      filename = fs.save(myfile.name, myfile) 
      uploaded_file_url = fs.url(filename) 
      return render(request, 'subir_csv.html', { 
       'uploaded_file_url': uploaded_file_url 
      }) 
    return render(request, 'subir_csv.html') 

而且方法为CSV传递给Python列表:

def csv_empresas(request): 
    lista = [] 

    with open('media/empresas.csv') as csvfile: 
     lector = csv.reader(csvfile, delimiter=',',quotechar='|') 
     for row in lector: 
      lista.append(row) 


    return render(request,'preparar_pdf.html',{"lista": lista}) 
+0

有啥问题,你面临 – Exprator

+0

的问题是代码:我需要从5个CSV文件进行PDF(传递Django的5名单函数视图)和csv的名称可以不同,所以我不知道如何将这5个列表传递给函数。 –

+0

有点难以解释为我的英语感到难过 –

回答

0

在上传文件时,可以保存所有将文件上传到媒体文件夹内的一个文件夹中

将上传的文件保存在文件夹ca中的代码大会另作upload_files

def subir_archivos(request): 
    if request.method == 'POST' and request.FILES['myfile']: 
     myfile = request.FILES['myfile'] 
     file_obj = myfile.read() 
     media_path = settings.MEDIA_ROOT 
     file_path= os.path.join(media_path, "upload_files") 
     if not os.path.isdir(file_path): 
      try: 
       os.makedir(file_path) 
      except OSError as e: 
       pass 
     file = os.path.join(file_path, myfile.name) 
     with open(file, 'wb') as f: 
      f.write(file_obj) 
     uploaded_file_url = os.path.join("/media", "upload_files", myfile.name) 
     return render(request, 'subir_csv.html', { 
       'uploaded_file_url': uploaded_file_url 
      }) 
    return render(request, 'subir_csv.html') 

,并为获得所有上传的文件

import os 
def csv_empresas(request): 
    lista = [] 
    media_path = settings.MEDIA_ROOT 
    file_path= os.path.join(media_path, "upload_files") 
    files = os.listdir(file_path) 
    for file in files: 
     with open(file, 'rb') as csvfile: 
      lector = csv.reader(csvfile, delimiter=',',quotechar='|') 
      for row in lector: 
       lista.append(row) 
    return render(request,'preparar_pdf.html',{"lista": lista})