2011-11-29 45 views
0

我有以下的發射器:django-piston:如何讓發射器返回可下載的文件?

class iCalEmitter(Emitter): 
    def render(self, request): 
     data = self.construct() 
     cal = Calendar() 

     cal.add('prodid', 'iCalendar Feed') 
     cal.add('version', '2.0') 
     for event in data: 
      if event.get('start'): 
       event['start_time'] = event['start'] 
      if event.get('end'): 
       event['end_time'] = event['end'] 

      ical_event = calEvent() 
      ical_event.add('summary', event['title']) 
      ical_event.add('dtstart', event['start_time']) 
      ical_event.add('dtend', event['end_time'] 
            if event.get('end_time') 
            else event['start_time']) 
      ical_event['uid'] = event['id'] 
      cal.add_component(ical_event) 

     return cal.as_string() 

我想修改響應,使其返回與特定文件名的下載文件。我會怎麼做呢? Django活塞在這方面的文件似乎非常薄弱。

回答

0

通過發射器修改響應頭並不是一件容易的事,所以我採取了不同的路線。我向我的應用添加了一個URL模式以匹配/events/calendar.ics並通過URL模式傳遞emitter_format參數。醜,但它的作品。