Admin에서 Img을 표현하는 방법
Django admin에서 list_display을 통해 해당 model의 img을 표현하고 싶다면 다음과 같이 작성한다.
from django.contrib import admin
from .models import Post
from django.utils.safestring import mark_safe
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ['pk', 'photo_view','message']
def photo_view(self, obj):
return mark_safe(f"<img src='{obj.photo.url}'>")
django는 기본적으로 autoscape (html 파일이 아닌 외부로부터의 코드를 모두 escape화 시키는 것을 의미)가 활성화 되어있기 때문에 img 태그를 사용을 해도 보이지 않고 해당 문자열만 반환된다.
따라서 해당 값을 태그로 받아드리게 하기 위해서 django.utils.safestring에서 제공하는 mark_safe을 이용하여 값을 넘겨주어 나타내어 준다면, 태그에 이미지가 뜨도록 설정 할 수 있다.
🔖 Django가 이렇게 설정한 이유로는 XSS 공격에 의한 취약점을 보호하고자 autoscape 사용을 채택하였다.
'FrameWork > Django' 카테고리의 다른 글
ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'accounts.account', but app 'accounts' doesn't provide model ' 에러 해결 (0) | 2023.04.04 |
---|---|
django-debug-toolbar을 통한 SQL 디버깅 정보 확인하기 (0) | 2023.03.17 |
ERROR : django.db.utils.OperationalError: no such table 오류 해결 (0) | 2023.02.19 |
[Django] 함수 기반 View (0) | 2023.02.08 |
[Django] 관계를 표현하는 Model Field (0) | 2023.02.08 |