我希望让用户上传文件(CSV)然后在我的views.py中访问它,以便使用我自己的代码来阅读它。但是,我一直收到错误:
[Errno 2]没有这样的文件或目录:'D:/media/data.csv'
作为参考,我的项目存储在我的PC上的以下目录中:
D:\Python\[PROJECT_NAME]
以下是我的settings.py的样子:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
和我的views.py:
import os
from django.conf import settings
def create_chart(request):
...
file = File.objects.get(id=4)
file_ = open(os.path.join(settings.MEDIA_ROOT, file.file.url))
如果我进入我的管理员,我可以点击一个条目并访问该文件。但是当试图在views.py中获取它时,它是不行的。我完全被这个问题弄糊涂了,任何帮助都将不胜感激。
答案 0 :(得分:1)
这是因为file.file.url
指的是可以访问文件的网址,而不是服务器文件系统中可以找到文件的位置。
相反,您可以通过django's built-in FieldFile
API访问文件内容。
#在views.py文件中
def create_chart(request):
file = File.objects.get(id=4)
content = file.read()
# you can also use open() to specify the mode
file_obj = file.open(mode='rb')
# and you can read the file line by line
for line in file_obj:
process_line(line)