【问题标题】:ValueError Django CSV值错误 Django CSV
【发布时间】:2020-02-19 18:51:31
【问题描述】:

我要做的就是通过 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 新手。如果有任何帮助,我将不胜感激。

Views.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>

【问题讨论】:

  • 正是 Anni,您没有将 HttpResponse 返回到 csv_simple_read。您所要做的就是返回csv_home.html 文件。 return render(request, "csv_home.html", {context_dict_in_case_to_show_csv_result})
  • 非常感谢您的帮助!我在views.py 的末尾添加了您的代码行,但不幸的是没有任何改变。代码看不到render@RajaSimon
  • 您是否在views.py 文件的顶部导入? from django.shortcuts import render
  • 不,最后。是的,我已经这样做了,就在我回答之后。现在{context_dict_in_case_to_show_csv_result}有问题

标签: django python-3.x csv


【解决方案1】:

让我们稍微更改一下您的视图代码,以便从 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 %}

【讨论】:

  • 现在不适合append:AttributeError: 'dict' object has no attribute 'append' "GET / HTTP/1.1" 500 68106
  • 已更改答案立即尝试。
  • 有!他拿出了数据!确实以一种可怕的形式出现,但尽管如此,他最终还是展示了表格中的数据。非常感谢你! @RajaSimon
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2020-04-08
  • 2019-04-26
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
相关资源
最近更新 更多