访问使用 FileField Django 上传的文件
Access to file uploaded with FileField Django
我正在尝试创建一个带有文件字段的 Django 表单,以根据模型上传 pdf。
#models.py
class ProductionRequest(models.Model):
...
contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/')
...
我可以上传文件并将其保存在我的对象中,但是当我尝试使用此代码在我的模板中显示文件时
{{ prod_req.contract_file }}
它只显示文件的路径
"contracts/file_uploaded.pdf"。我怎样才能 link 下载(或在新标签页中打开)文件?
另外:当我尝试从 Django 管理员打开文件时,link
合同文件 (PDF):当前:contracts/file_uploaded.pdf
我没有给我看文件,我得到了这个:
Page not found (404) Request URL: http://127.0.0.1:8000/admin/appname/productionrequest/1/change/contracts/file_uploaded.pdf/change/
如何访问我的文件?
它就像 Python 文件一样工作。因此,您刚刚引用文件对象的方式。
要获取文本,您需要使用f.read()
。所以,在你的模板中,而不是
{{ prod_req.contract_file }}
使用
{{ prod_req.contract_file.read }}
但是,请注意调用 read
会将光标移动到文件末尾。第一次对文件调用 read
时,它会 returns 所有文本。第二次,它 returns 什么都没有。如果您需要两次文本,这只是一个问题,但在这种情况下,请将文本直接存储在上下文对象上。
如果有任何不清楚的地方,请告诉我。
我正在尝试创建一个带有文件字段的 Django 表单,以根据模型上传 pdf。
#models.py
class ProductionRequest(models.Model):
...
contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/')
...
我可以上传文件并将其保存在我的对象中,但是当我尝试使用此代码在我的模板中显示文件时
{{ prod_req.contract_file }}
它只显示文件的路径 "contracts/file_uploaded.pdf"。我怎样才能 link 下载(或在新标签页中打开)文件?
另外:当我尝试从 Django 管理员打开文件时,link
合同文件 (PDF):当前:contracts/file_uploaded.pdf
我没有给我看文件,我得到了这个:
Page not found (404) Request URL: http://127.0.0.1:8000/admin/appname/productionrequest/1/change/contracts/file_uploaded.pdf/change/
如何访问我的文件?
它就像 Python 文件一样工作。因此,您刚刚引用文件对象的方式。
要获取文本,您需要使用f.read()
。所以,在你的模板中,而不是
{{ prod_req.contract_file }}
使用
{{ prod_req.contract_file.read }}
但是,请注意调用 read
会将光标移动到文件末尾。第一次对文件调用 read
时,它会 returns 所有文本。第二次,它 returns 什么都没有。如果您需要两次文本,这只是一个问题,但在这种情况下,请将文本直接存储在上下文对象上。
如果有任何不清楚的地方,请告诉我。