无法使用Django和Python将csv文件保存到文件夹

问题描述:

我试图将一些.csv文件保存到文件夹中,但使用Python和Django抛出下面的错误。我在下面解释我的错误。无法使用Django和Python将csv文件保存到文件夹

错误:

Exception Type:  NameError 
Exception Value:  

global name 'filename' is not defined 

我解释下面我的代码。

report = Reactor.objects.all() 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename='+str(uuid.uuid4())+'.csv' 
    writer = csv.writer(response) 
    writer.writerow(['Name', 'Status', 'Date']) 
    for rec in report: 
     if rec.status == 1: 
      status = 'Start' 
     if rec.status == 0: 
      status = 'Stop' 
     if rec.status == 2: 
      status = 'Suspend' 
     writer.writerow([rec.rname, status, rec.date]) 
    open(settings.FILE_PATH+filename,'w') 
    return response 

settings.py:

FILE_PATH = os.path.join(BASE_DIR, '/upload/') 

在这里,我拧DB值到.CSV文件并下载。在同一时间,我需要将该下载的文件保存到upload文件夹中,但得到这些错误。

+1

'open(settings.FILE_PATH + filename,'w')'这里是什么'filename'? – bhansa

+1

你为什么在你回来之前打开文件? –

这正是错误告诉你的。您还没有定义filename任何地方,但在被称之为open(settings.FILE_PATH+filename,'w')

尝试:

filename = str(uuid.uuid4()) + '.csv' 
response['Content-Disposition'] = 'attachment; filename=' + filename 

相关,但不是你所看到的问题,什么是开放写入文件的点,但从不向它写任何东西?

+0

好的,但我的要求是保存下载的文件。你可以在这里检查'filename ='+ str(uuid.uuid4())+'。csv''。 – satya

+0

Hete我可以下载文件,我需要在下载之前保存该文件。 – satya

+0

但是,这是一个字符串的一部分,你要放入'response'中。 – Batman