Как обработать ошибку FileNotFound при использовании тега img с помощью mark_safe в django admin
Я импортирую изображения в AWS S3 с помощью django-storages. Однако, если у администратора Django нет соответствующего изображения в S3, администратор хотел бы выдать ошибку FileNotFoundError, чтобы исправить объект S3BotoStorage или исправить основную проблему для обработки ошибки.
admin/hospital.py
class HospitalAdmin(OrderedInlineModelAdminMixin, IdFieldIncludedModelAdmin):
list_display = ("name", "tags_comma_separated", "created_at")
list_display_links = ("name",)
list_filter = [TagFilter]
fieldsets = (
(None, {"fields": ("user",)}),
(
None,
{
"fields": (
"logo_image",
"logo_image_width",
"logo_image_height",
"logo_image_preview",
"name",
"description",
"address",
"longitude",
"latitude",
"near_station_name",
"phone_number",
"sms_phone_number",
)
},
),
(
None,
{
"fields": (
"created_at",
"updated_at",
)
},
),
)
readonly_fields = [
"logo_image_width",
"logo_image_height",
"logo_image_preview",
"created_at",
"updated_at",
]
...
# FileNotFound Error occurs in the lower part
@display(description="preview log image")
def logo_image_preview(self, obj):
return mark_safe(
'<img src="{url}" width="{width}" height="{height}" />'.format(
url=obj.logo_image.url,
width=obj.logo_image.width,
height=obj.logo_image.height,
)
)
Я добавил оператор try/except к части ошибки, чтобы сгенерировать корректную ошибку, но это, похоже, не решает фундаментальную проблему
try:
return mark_safe(
'<img src="{url}" width="{width}" height="{height}" />'.format(
url=obj.logo_image.url,
width=obj.logo_image.width,
height=obj.logo_image.height,
)
)
except FileNotFoundError as e:
return str(e)