最近遇到一個需求, 需要在django 的 admin 編輯頁內展示由用戶上傳的進行反饋的圖片, 還要支持點擊查看原圖, 所以需要在編輯頁內自定義 img 標簽及 a 標簽進行圖片的展示及點擊跳轉
import json from django.contrib import admin from django.utils.safestring import mark_safe from yourapp.models import YourModel @admin.register(YourModel) # 注冊模型到admin站點中 class YourAdmin(admin.ModelAdmin): ... # 自定義一個字段 def image_url(self, obj): image = obj.image if fb_img: image_html = "" for img_url in json.loads(image): artwork = ".".join(img_url.split(".")[0:-2]) # 根據業務需求, 拿到所有圖片的url, 拼接 img 及 a 標簽 image_html += '<a href="{}" target="_blank"><img src="{}" style="width:200px; height:200px; margin-right:2.5px; margin-left:2.5px; margin-bottom:5px"/></a>'.format(artwork, img_url) html = "<div>" + image_html + "</div><div>提示: 點擊圖片查看原圖</div>" else: html = "-" return mark_safe(html) # 取消轉義 image_url.short_description = "反饋圖片" image_url.allow_tags = True # 重寫編輯頁, 繼承父類方法 def change_view(self, request, object_id, extra_context=None): self.fields = ("name", "created", "content", "image_url") # 將自定義的字段注冊到編輯頁中 self.readonly_fields = ("name", "created", "image_url") # 務必將該字段設置為僅限可讀, 否則拋出異常 return super(YourAdmin, self).change_view(request, object_id, extra_context=extra_context)