【问题标题】:Django - forms.FileField() initial valueDjango - forms.FileField() 初始值
【发布时间】:2011-05-20 11:47:03
【问题描述】:

是否可以动态地为 forms.FileField() 赋予初始值?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    按照安全标准,<input type="file"> 不能有默认值,也不能被操纵。

    原因是,黑客可以将文件输入的默认值设置为您系统上的任何重要文件(包含密码、证书等),使用 CSS 隐藏此字段,您将永远不会知道您已上传黑客主机的东西。

    【讨论】:

      【解决方案2】:

      我不确定,如果这是你想要的,但是……

      显然您不能为文件输入设置初始数据(这意味着您将文件发送给用户)。 Django 有一个 ClearableFileInput 小部件,这个小部件假装显示初始数据:它显示一个指向上传文件的链接如果链接存在

      这是通过检查初始对象(files 字典中传递给表单构造函数的对象)是否具有url 属性来实现的。设置此属性后,小部件将显示“当前链接”行。

      顺便说一句,如果您使用文件存储获取文件对象,那么您可以使用存储的url() 方法获取指向该文件的链接。

      【讨论】:

      • .url 提示非常有用。这应该是公认的答案。
      • 这很有帮助,你能举例说明如何实现它吗?例如。在模型中使用 myfile=models.FileField(upload_to='mydocs', default='mydocs/myfile.pdf') 似乎不会将初始值传递给表单。
      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 2019-08-11
      • 2011-12-13
      • 2010-11-23
      • 2019-08-26
      • 2018-01-11
      • 2012-03-20
      • 2021-12-19
      相关资源
      最近更新 更多