2014-01-29 43 views
1

我在python中使用csv模块来从Google App Engine中的一个数据存储表中创建一个下载。下载工作正常,但您必须手动添加扩展名,以便您可以在Excel中打开它。我无法弄清楚如何修改响应,以便文件下载具有.csv扩展名。我可以让它像这样,但是这个网络应用程序是为了广泛的受众,所以我想让它尽可能容易让他们使用。如何将.csv扩展名添加到Google App Engine中的文件下载中?

class fuCheckUp(webapp2.RequestHandler): 

    def get(self): 

     schedule_query = emailSchedule.all() 
     follow_up_num = schedule_query[0].follow_up_num 

     email_job_query = emailJobs.all() 
     email_job_query.order('consent_date') 

     header_tuple = ('last_modified', 'trigger_id', 'recipient_id', 'test_data', 'unsubscribe', 'start_date_local', 'consent_date', 'fu_period', 'last_fu_sent') 
     data_tuples =() 
     variable_list = [] 

     for i in range(1, follow_up_num + 1): 
     i = str(i) 

     fu_due = 'fu' + i 
     fu_sent = 'fu' + i + '_email_sent' 

     variable_list.append(fu_due) 
     variable_list.append(fu_sent) 

     data_tuples = data_tuples + (fu_due, fu_sent) 

    final_data_tuple = header_tuple + data_tuples 
    data = [final_data_tuple] 

    for part in email_job_query: 
     last_modified = str(part.last_modified) 
     trigger_id = str(part.trigger_id) 
     recipient_id = str(part.recipient_id) 
     test_data = str(part.test_data) 
     unsubscribed = str(part.unsubscribed) 
     start_date_local = str(part.start_date_local) 
     consent_date = str(part.consent_date) 
     fu_period = str(part.fu_period) 
     last_fu_sent = str(part.last_fu_sent) 

     var_list = [] 

     for var in variable_list: 
      fu_var = getattr(part, var) 
      var_list.append(str(fu_var)) 

     var_tuple = tuple(var_list) 

     fixed_tuple = (last_modified, trigger_id, recipient_id, test_data, unsubscribed, start_date_local, consent_date, fu_period, last_fu_sent) 
     csv_tuple = fixed_tuple + var_tuple 

     data.append((csv_tuple)) 

    self.response.headers['Content-Type'] = 'application/csv' 
    writer = csv.writer(self.response.out) 

    for item in data: 
     writer.writerow(item) 

回答

2

添加另一个响应头是这样的:

Content-Disposition: attachment;filename=example.csv 
+0

相应的语法是:self.response.headers [ '内容处置'] =“附件;文件名= measurements.csv” –

相关问题