首页 > 解决方案 > 值错误 Django CSV

问题描述

我要做的就是通过 Django 在页面上显示我的 CSV 表。一切似乎都正常,但由于某种原因,我收到了一个错误,我找不到解决方案

ValueError: The view csv_app.views.csv_simple_read didn't return an HttpResponse object. It returned None instead.
[19/Feb/2020 21:40:07] "GET / HTTP/1.1" 500 57986

我是 Django 的新手。如果有任何帮助,我将不胜感激。

视图.py

import csv
import os

def csv_simple_read(request):
 path = os.path.dirname(__file__)
 file = os.path.join(path, 'csv_simple_read.csv')

 with open(file) as csv_file:
  csv_reader = csv.reader(csv_file, delimiter=';')
  line_count = 0
  for row in csv_reader:
    print('\n\nColumn names are {}, {}, {}, {}'.format(row[0], row[1], row[2], row[3]))
    line_count += 1

csv_simple_read.csv

test3;2020-02-16;05:22:49;OK
test2;2020-02-16;05:22:25;OK
test1;2020-02-16;05:22:10;OK
test3;2020-02-16;05:22:49;OK
test2;2020-02-16;05:22:25;OK
test1;2020-02-16;05:22:10;OK

csv_home.html

 <body>
 <h3>CSV Example - Read Write Examples</h3>
 <ul>
 <br>
 <li>Read Operation
 <ul>
 <li>
 <a href="{% url 'csv_simple_read' %}">Simple CSV Read Operation</a>
 </li>
 </ul>
 </li>
 </ul>
 {{csv_data}}
 {% if csv_data %}
 sad
 {{csv_data}}
 {% endif %}
 </body>

标签: djangopython-3.xcsv

解决方案


让我们稍微更改一下您的视图代码,以便从 Python 转换为 HTML。

with open(file) as csv_file:
  csv_reader = csv.reader(csv_file, delimiter=';')
  line_count = 0
  resultlist = []
  for row in csv_reader:
    resultdict = {}
    resultdict['name'] = row[0]
    resultdict['date'] = row[1]
    resultdict['time'] = row[2]
    resultdict['status'] = row[3]
    resultlist.append(resultdict)

    line_count += 1
return render(request, "csv_home.html", {'results': resultlist})

在您的 HTML 文件中,您可以执行此操作

{% for result in results %}
    {{ result.name }}
    {{ result.date }}
{% endfor %}

推荐阅读