我正在尝试创建一个带有文件字段的Django表单,以便根据模型上传pdf。
#models.py
class ProductionRequest(models.Model):
...
contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/')
...
我可以上传文件并将其保存在我的对象中,但是当我尝试使用此代码在我的模板中显示该文件时
{{ prod_req.contract_file }}
它只显示文件的路径 “合同/ file_uploaded.pdf”。如何创建链接以下载(或在新选项卡中打开)文件?
另外:当我尝试从Django admin打开文件时,使用此链接
合同文件(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/
如何访问我的文件?
答案 0 :(得分:0)
它就像一个Python文件。所以,你刚刚引用文件对象的方式。
要获取文字,您需要使用f.read()
。因此,在您的模板中,而不是
{{ prod_req.contract_file }}
使用
{{ prod_req.contract_file.read }}
但请注意,调用read
会将光标移动到文件末尾。第一次在文件上调用read
时,它会返回所有文本。第二次,它什么也没有返回。如果您需要两次文本,这只是一个问题,但在这种情况下,将文本直接存储在上下文对象上。
如果有什么不清楚,请告诉我。