2014-01-29 3 views
1

저는 Python의 csv 모듈을 사용하여 Google App Engine의 데이터 저장소 테이블 중 하나에서 다운로드를 만듭니다. 다운로드가 제대로 작동하지만 Excel에서 열 수 있도록 확장 프로그램을 수동으로 추가해야합니다. 파일 다운로드에 .csv 확장자가 포함되도록 응답을 수정하는 방법을 알 수 없습니다. 그러나이 웹 앱은 광범위한 사용자를 대상으로하므로 사용할 수 있도록 가능한 한 쉽게 만들고 싶었습니다.Google App Engine에서 파일 다운로드에 .csv 확장자를 어떻게 추가합니까?

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 ' –

관련 문제