【发布时间】:2018-06-27 02:47:49
【问题描述】:
这是我的问题的后续:ImageField / FileField Django form Currently unable to trim the path to filename
在我的 Django 应用程序中,有一个图像字段上传到 S3 修剪图像文件路径名后,由于url被修剪,图像无法访问。如何修剪显示但不修剪路径?
我设法修剪显示这样的文件名的显示
class CustomClearableFileInput(ClearableFileInput):
def get_context(self, name, value, attrs):
logging.debug("%s",name)
logging.debug("%s",value)
value.name = path.basename(value.name)
context = super().get_context(name, value, attrs)
return context
class CompanySettingEdit(forms.ModelForm):
company_logo = forms.ImageField(widget=CustomClearableFileInput)
这是输出:
https://imgur.com/a/M42Mz <-- display correct
https://bucketname.s3.amazonaws.com/media/certiport_logo.png <-- invalid url
如果我不修剪它:
class CustomClearableFileInput(ClearableFileInput):
def get_context(self, name, value, attrs):
logging.debug("%s",name)
logging.debug("%s",value)
# value.name = path.basename(value.name) <-- remove this
context = super().get_context(name, value, attrs)
return context
class CompanySettingEdit(forms.ModelForm):
company_logo = forms.ImageField(widget=CustomClearableFileInput)
这是输出:
https://imgur.com/a/rGi8f <-- display incorrect
https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png <--valid url
我的目标是:
display: certiport_logo.png
url: https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png
我怎样才能做到这一点?
【问题讨论】:
-
我不确定这是否是最佳选择 - 如果有人将两张图片上传到
/company_logo/15/certiport_logo.png和/company_logo/14/certiport_logo.png会怎样?/media/certiport_logo.png会指向什么? -
好吧...可以随机化它。这不是问题。问题是网址不正确。我希望它使用实际的 url 指向修剪后的名称。
-
您是否尝试向您的
CompanySetting模型添加一个属性,该属性返回一个修剪后的 url 并让company_logo字段成为实际的完整 url? -
有什么用?问题更多的是链接(url)不正确。目前您可以使用 .url 获取正确的 url。问题是显示并将其链接到正确的网址。不可能吗?
标签: python django amazon-s3 imagefield