【发布时间】:2017-12-09 14:10:46
【问题描述】:
我尝试使用 Upload_Path_Handler 以允许动态文件夹名称(例如上传日期、项目 ID 等) 保存上传的图像文件由用户,以防止重复实例。
问题是我返回的目录太“深”,无法通过 HTML 文件检索,因为它以应用程序的名称开头(在本例中为“vault”)。为 HTML 文件中的图像提供的损坏路径如下:
<img src="vault/static/vault/images/recordimages/r_1/2017-12-09_03-27-42/300x300.jpg">
但是,通过在开头使用检查器元素排除应用程序名称“保险库”,我能够成功检索图像:
<img src="/static/vault/images/recordimages/r_1/2017-12-09_03-27-42/300x300.jpg">
损坏的路径在原始 html 文件中提供为:
<img src="{{ record.w_image }}">
而引用的模型w_image在models.py中如下:
w_image = models.ImageField(null=False, blank=True, verbose_name='Record Image:', upload_to=upload_path_handler)
那么,当然是upload_path_handler:
def upload_path_handler(self, filename):
return "vault/static/vault/images/recordimages/r_{id}/{date}/{file}".format(id=self.id, file=filename, date=datetime.datetime.utcnow().strftime('%Y-%m-%d_%H-%M-%S'))
如果我从 /static/ 开始返回路径,那么它会将图像保存在 WebsiteName/static/../.. 而不是 WebsiteName/vault/static/../.. (请记住,这里的目的是让 /static/ 目录成为我们应用程序 'vault' 的子目录)
如何在不损害作为“保险库”子目录的路径的情况下允许检索图像?
【问题讨论】:
-
除此之外,您当然应该使用前导下划线:
/vault/...而不是vault/...。
标签: python html django django-models