我有一個掛架控制器,其行爲叫做連載返回content_type=text/csv
。我希望根據輸入的patameter命名該動作的響應,即對於下面的路由,生成的csv文件應該命名爲{id}.csv
:/app/PROD/serialize
=>PROD.csv
(因此用戶可以使用正確的名稱在Excel中打開該文件直接通過web瀏覽器)主塔:響應重命名?有沒有更好的辦法?
map.connect('/app/{id}/serialize',controller = 'csvproducer',action='serialize')
我試着設置不同的HTTP標頭和沒有運氣的WebOb的響應對象的屬性。
map.connect('/app/{id}/serialize',controller = 'csvproducer',action='serialize')
map.connect('/app/csv/{foo}',controller = 'csvproducer', action='tocsv')
控制器的片段:
def serialize(self,id):
try:
session['key'] = self.service.serialize(id) #produces csv content
session.save()
redirect_to(str("/app/csv/%s.csv" % id))
except Exception,e:
log.error(e)
abort(503)
def tocsv(self):
try:
csv = session.pop("rfa.enviornment.serialize")
except Exception,e:
log.error(e)
abort(503)
if csv:
response.content_type='text/csv'
response.status_int=200
response.write(csv)
else:
abort(404)
上面的設置不過,我只需添加一個新的動作控制器和動態重定向原訴訟到新的行動,即想出了一個解決方法作品完美無瑕,但是,是否有更好/更靈活/更乾淨的方式?理想情況下,我不想重定向請求;相反,我想要麼重新命名location
或設置content-disposition: attachment; filename='XXX.csv'
[不成功嘗試都:(]
我失去了一些東西很明顯這裏
乾杯
UPDATE: 由於EBO我已設法修復content-disposition
。下次應該更好地閱讀W3C規範;)
乾杯,就是這樣!缺少雙引號。該死!我花了太多時間編寫Python> :) – Dave 2010-02-18 08:13:21