Python 使用FileField Django访问上载的文件

Python 使用FileField Django访问上载的文件,python,django,forms,file-upload,filefield,Python,Django,Forms,File Upload,Filefield,我正在尝试创建一个带有文件字段的Django表单,以便根据模型上载pdf #models.py class ProductionRequest(models.Model): ... contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/') ... 我可以上传文件并将其保存在我的对象中,但是当我尝试使用此代码在模板中显示文件时 {{ prod_req.contra

我正在尝试创建一个带有文件字段的Django表单,以便根据模型上载pdf

#models.py
class ProductionRequest(models.Model):
     ...
     contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/')
     ...
我可以上传文件并将其保存在我的对象中,但是当我尝试使用此代码在模板中显示文件时

 {{ prod_req.contract_file }}
它只显示文件的路径 合同/上传文件_.pdf。如何在文件的新选项卡中创建下载或打开的链接

另外:当我尝试从Django admin打开文件时,使用以下链接

合同文件PDF:当前:合同/file_upload.PDF

我没有给我看文件,我有这个:

找不到页面404请求URL:http://127.0.0.1:8000/admin/appname/productionrequest/1/change/contracts/file_uploaded.pdf/change/


如何访问我的文件?

它的工作原理与Python文件一样。因此,您刚才引用文件对象的方式

要获取文本,需要使用f.read。因此,在模板中,而不是

{{ prod_req.contract_file }}
使用

但是,请注意,调用read会将光标移动到文件的末尾。第一次对文件调用read时,它将返回所有文本。第二次,它什么也不返回。如果需要两次文本,这只是一个问题,但在这种情况下,请将文本直接存储在上下文对象上


如果有任何不清楚的地方,请告诉我。

可能会有帮助。谢谢你,现在我可以拿到我的文件了!
{{ prod_req.contract_file.read }}