【发布时间】:2013-11-27 20:02:41
【问题描述】:
我正在使用 django,我正在尝试将 CSV_data 列表导出到 csv 文件中。下面是我的 csv.py:
#coding=utf-8
from django.http import HttpResponse
from django.template import loader, Context
from demo.views import CSV_data
def output(request, filename):
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s.csv' % filename
t = loader.get_template('csv.txt')
c = Context({
'data': CSV_data,
})
response.write(t.render(c))
return response
CSV_data 是views.py 中的一个变量,我尝试在模板中打印它,该值是可以的。
[(u'2012-06-01', [0, 0, 0]), ('2012-06-08', [0, 0, 0]), ('2012-06-15', [0, 0, 0]), ('2012-06-22', [0, 0, 0]), ('2012-06-29', [0, 0, 0]), ('2012-07-06', [0, 0, 0]), ('2012-07-13', [0, 0, 0]), ('2012-07-20', [0, 0, 0]), ('2012-07-27', [0, 0, 0]), ('2012-08-03', [131, 164, 79.88]), ('2012-08-10', [110, 198, 55.56]), ('2012-08-17', [112, 197, 56.85]), ('2012-08-24', [147, 283, 51.94]), ('2012-08-31', [0, 306, 0.0]), ('2012-09-07', [418, 418, 100.0]), ('2012-09-14', [342, 342, 100.0]), ('2012-09-21', [732, 732, 100.0]), ('2012-09-28', [689, 689, 100.0]), ('2012-10-05', [775, 775, 100.0]), ('2012-10-12', [469, 469, 100.0]), ('2012-10-19', [477, 477, 100.0]), ('2012-10-26', [897, 897, 100.0]), ('2012-11-02', [216, 216, 100.0]), ('2012-11-09', [1046, 1046, 100.0]), ('2012-11-16', [840, 840, 100.0]), ('2012-11-23', [948, 948, 100.0])]
但是,生成的 csv 始终为空。
我尝试将 CSV_data 定义添加到 csv.py 文件中,如下所示:
#coding=utf-8
from django.http import HttpResponse
from django.template import loader, Context
CSV_data = [(u'2012-06-01', [0, 0, 0]), ('2012-06-08', [0, 0, 0]), ('2012-06-15', [0, 0, 0]), ('2012-06-22', [0, 0, 0]), ('2012-06-29', [0, 0, 0]), ('2012-07-06', [0, 0, 0]), ('2012-07-13', [0, 0, 0]), ('2012-07-20', [0, 0, 0]), ('2012-07-27', [0, 0, 0]), ('2012-08-03', [131, 164, 79.88]), ('2012-08-10', [110, 198, 55.56]), ('2012-08-17', [112, 197, 56.85]), ('2012-08-24', [147, 283, 51.94]), ('2012-08-31', [0, 306, 0.0]), ('2012-09-07', [418, 418, 100.0]), ('2012-09-14', [342, 342, 100.0]), ('2012-09-21', [732, 732, 100.0]), ('2012-09-28', [689, 689, 100.0]), ('2012-10-05', [775, 775, 100.0]), ('2012-10-12', [469, 469, 100.0]), ('2012-10-19', [477, 477, 100.0]), ('2012-10-26', [897, 897, 100.0]), ('2012-11-02', [216, 216, 100.0]), ('2012-11-09', [1046, 1046, 100.0]), ('2012-11-16', [840, 840, 100.0]), ('2012-11-23', [948, 948, 100.0])]
def output(request, filename):
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s.csv' % filename
t = loader.get_template('csv.txt')
c = Context({
'data': CSV_data,
})
response.write(t.render(c))
return response
那么输出的csv不为空。所以我猜从views.py导入CSV_data时有问题。
问题是我已经测试过视图中的 CSV_data 值是正确的。那么会出现什么问题呢?
****************更新****************:
views.py 中的原始代码如下:
CSV_data = []
def part_usage_result(request):
...(details omit)
usageDictWeek = helper.getResultByWeek(modelName, spareCode, start, end) #returns a list
CSV_data=usageDictWeek
我改成:
CSV_data = []
def part_usage_result(request):
...(details omit)
usageDictWeek = helper.getResultByWeek(modelName, spareCode, start, end) #returns a list
for each in usageDictWeek:
CSV_data.append(each)
现在 csv 的内容是正确的。 还是不知道为什么会这样
【问题讨论】:
-
你必须更深入:)
helper.getResultByWeek的相关代码是什么?part_usage_result是如何被调用的? CSV_data[:] = usageDictWeek 有帮助吗? -
是的 CSV_data[:] = usageDictWeek 有效!我想我需要学习更多 Python :)