我需要在view方法中读取CSV文件。这是我在django项目www.example.com中的视图方法views.py:
def myfile(request):
csv_fp = open('file.csv', 'r')
reader = csv.DictReader(csv_fp)
headers = [col for col in reader.fieldnames]
out = [row for row in reader]
return render(request, 'myfile.html', {'data' : out, 'headers' : headers})
字符串
这是在我的urls.py:path('myfile/', views.myfile, name='myfile'),
我的Django版本是:3.2.2
我尝试了很多方法在csv_fp = open('file.csv', 'r')
中打开文件。
我在我的views.py中使用了以下方法,但没有一种有效:
我的文件在静态目录:
csv_fp = open('static/file.csv' , 'r') # not working
csv_fp = open('file.csv' , 'r') # not working
的数据
我在我的views.py中添加了以下行,但它并不起作用:
import csv, os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
file_path = os.path.join(STATIC_ROOT, 'file.csv')
csv_fp = open(file_path , 'r')
型
这是错误消息:
异常位置:/home/djangoir/virtualenv/project/3.7/lib/python3.7/site-packages/django/template/loader.py,line 19,in get_template
关键是我不想为数据库生成模型并将CSV文件导入数据库。我只需要以某种方式读取文件并在render方法中将其数据导出到字典中。
1条答案
按热度按时间iqxoj9l91#
记住:运行应用程序的是manage.py文件。因此,每个文件路由都必须相对于manage.py文件进行。
你需要一个类似这样的文件结构:
字符串
然后,您的视图可以是:
型
我会尽量避免将它连接到您的静态文件。静态文件的点是直接由您的服务器/代理服务器提供服务(例如nginx),但如果我理解正确的话,你不希望这样。而不是直接服务,不修改用户,你想“做的东西”与读取csv文件第一。