Django 从视图文件访问.csv数据

Django 从视图文件访问.csv数据,django,csv,chart.js,Django,Csv,Chart.js,我有一个小型Django应用程序,我正在尝试从CSV文件(static/blog/dat.CSV,static文件夹与templates文件夹和views.py处于同一级别;所有内容都在我的博客应用程序中)访问数据,因此我可以使用它在浏览器上使用Chart.js绘制图形。除了无法做到这一点之外,该应用程序运行良好 我知道我需要向视图函数传递某种上下文,但我不知道该怎么做。另外,我有两个类似的csv文件,在我的应用程序中将它们作为静态文件使用似乎比以这种方式将所有内容添加到数据库更简单、更容易 #

我有一个小型Django应用程序,我正在尝试从CSV文件(static/blog/dat.CSV,static文件夹与templates文件夹和views.py处于同一级别;所有内容都在我的博客应用程序中)访问数据,因此我可以使用它在浏览器上使用Chart.js绘制图形。除了无法做到这一点之外,该应用程序运行良好

我知道我需要向视图函数传递某种上下文,但我不知道该怎么做。另外,我有两个类似的csv文件,在我的应用程序中将它们作为静态文件使用似乎比以这种方式将所有内容添加到数据库更简单、更容易

#views.py
从django.shortcuts导入渲染
从django.contrib.staticfiles.storage导入staticfiles\u存储
导入csv
def rtest(请求):
url=staticfiles\u storage.url('blog/dat.csv'))
打开(url,'r')作为csv_文件:
csv\u reader=csv.reader(csv\u文件)
对于csv_读取器中的行:
上下文+=行
返回呈现(请求'blog/r.html',上下文)
#url.py
URL模式=[
# ...
路径('r-test/',views.rtest,name='blog-r-test'),
]
下面是我得到的错误:

FileNotFoundError at /r-test/

[Errno 2] No such file or directory: '/static/blog/dat.csv'
我相信这不是唯一的错误

我知道我使用
context
变量的方式是错误的,但这只是为了说明我在尝试做什么。如果我能从csv打印一个单元格,我会认为这是一个胜利。请帮忙,谢谢

------编辑1------
使用
staticfiles\u storage.path()
而不是
staticfiles\u storage.url()

------编辑2------
我现在可以找到我的csv文件:

STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/riccl/Documents/richie/Python/nuclear/main/book/static/book'
但是我的上下文变量仍然没有任何意义。

您需要使用来读取文件
staticfiles\u storage.url()
将返回用户用于在站点上加载静态文件的url

是运行后存储所有静态文件的位置,大多数情况下设置为
/static/
。这也是
staticfiles\u storage.path()
查找静态文件的地方


您还需要进行设置,以便可以通过
collectstatic
找到您的文件。我通常在
//static/
有一个文件夹,我把它添加到
STATICFILES\u DIRS

你能分享你的
static\u ROOT
设置吗?看起来它配置错误。我的settings.py文件中没有
STATIC\u ROOT
,但我有
STATIC\u URL='/STATIC/'
谢谢!你是对的。但现在我又犯了一个新错误。您是否知道如何正确配置
静态\u ROOT
?我刚刚编辑了我的问题,我认为上下文变量仍然是错误的……如果您有任何评论可以为我指出正确的方向。再次感谢你!我得到了它!!我使用的是绝对路径C:/User/。。。。。使用静态_根变量。我现在可以找到我的csv文件…但我仍然有上下文错误…错误消息不会有多大帮助,因为它有点没有意义…我需要重新做整个视图功能。你知道我该怎么解决这个问题吗?你犯了什么错误?如果您共享整个stacktrace,它可能会很有用。如果它太长,你可以把它放在pastebin上。我没有任何错误消息可以分享,因为我的代码没有任何意义。我所拥有的只是上述问题中的rtest函数……这只是一次失败的尝试。我试图将字典作为上下文传递给我的视图函数,以便在模板中使用它。
STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/riccl/Documents/richie/Python/nuclear/main/book/static/book'