Django如何在FileField

时间:2017-03-21 21:31:20

标签: django

我需要打开保存在FileField中的文件,创建一个包含文件内容的列表并将其传递给模板。我该如何打开文件?我试过with open(stocklist.csv_file.url, "wb"),但它给了我一个“找不到文件”的错误。如果我这样做:

csv_file = stocklist.csv_file.open(mode="rb")

csv_fileNone。但是,有一个文件。如果我打印print("stocklist.csv_file.url: %s" % stocklist.csv_file.url)我会得到

stocklist.csv_file:https://d391vo1.cloudfront.net/csv_pricechart/...ss7.csv

如果我去管理员,我可以下载该文件。那么,如何打开保存在FileField

中的文件

1 个答案:

答案 0 :(得分:4)

.open()打开文件光标但不返回它,因为它取决于您的存储(文件系统,S3,FTP ...)。打开后,you can use .read() to iterate over the file content

stocklist.csv_file.open(mode="rb")
content = stocklist.csv_file.read()
stocklist.csv_file.close()

如果您想专门使用文件描述符,那么您可以使用存储功能:

from django.core.files.storage import DefaultStorage
storage = DefaultStorage()
f = storage.open(stocklist.csv_file.name, mode='rb')