使用视图/模板在表格中显示CSV内容

时间:2017-08-17 15:45:51

标签: django csv django-templates django-views

我正在创建一个用户可以上传csv文件的网站,目前正在处理一个页面,用户可以在该页面上查看该文件的内容而无需下载。要做到这一点,我正在这样的视图中阅读csv:

def source_details(request, source_id):
    context_dict = {}

    # Get a specific object
    data_source = Source.objects.get(id=source_id)
    context_dict['data_source'] = data_source

    # Open the csv and print it to terminal
    with open(MEDIA_ROOT+data_source.sample, newline='') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
        for row in spamreader:
            print(', '.join(row))


    return render(request, 'data/source-details.html', context_dict)

正如您所看到的那样,我可以毫不费力地打开上传的csv文件并将其打印到终端,但我希望将其作为表格显示在浏览器中。有关如何实现这一目标的任何想法?谢谢。

1 个答案:

答案 0 :(得分:0)

您可能想要列出以下列表:

csv_preform = [[row1],[row2],[row3]]

然后将其传递给上下文并将其循环到模板中,如表:

<table>
<tr>
    <th>Test1</th>
    <th>Test2</th>
         ...
</tr>

{% for row in csv_preform %}
<tr>
    {% for sub_row in row %}
        <td>{{sub_row}}</td>
    {% endfor %}
</tr>
{% endfor %}
</table>