【发布时间】:2011-05-20 11:47:03
【问题描述】:
是否可以动态地为 forms.FileField() 赋予初始值?
【问题讨论】:
标签: django django-forms
是否可以动态地为 forms.FileField() 赋予初始值?
【问题讨论】:
标签: django django-forms
按照安全标准,<input type="file"> 不能有默认值,也不能被操纵。
原因是,黑客可以将文件输入的默认值设置为您系统上的任何重要文件(包含密码、证书等),使用 CSS 隐藏此字段,您将永远不会知道您已上传黑客主机的东西。
【讨论】:
我不确定,如果这是你想要的,但是……
显然您不能为文件输入设置初始数据(这意味着您将文件发送给用户)。 Django 有一个 ClearableFileInput 小部件,这个小部件假装显示初始数据:它显示一个指向上传文件的链接如果链接存在。
这是通过检查初始对象(files 字典中传递给表单构造函数的对象)是否具有url 属性来实现的。设置此属性后,小部件将显示“当前链接”行。
顺便说一句,如果您使用文件存储获取文件对象,那么您可以使用存储的url() 方法获取指向该文件的链接。
【讨论】:
.url 提示非常有用。这应该是公认的答案。
myfile=models.FileField(upload_to='mydocs', default='mydocs/myfile.pdf') 似乎不会将初始值传递给表单。