2014-01-29 44 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」 –

相關問題