在admin类里面挂载自定义js
@admin.register(Dog)
class DogAdmin(admin.ModelAdmin):
list_display = ('img', 'name', 'age', 'operate')
list_display_links = ('name',)
# 在list页面显示头像
@admin.display(description='头像', ordering='name')
def img(self, obj):
# 在custom.js里面实现了show_pic函数,onclick进行调用
div = f"""<img id='icon_{obj.id}' src='{obj.icon.url}'
width='32px' οnclick='show_pic("{obj.icon.url})"' />"""
return mark_safe(div)
# 挂载自定义的js,css也可以挂,可以挂载本地文件,也可以挂载网络文件
class Media:
js = ('js/custom.js',
# 也可以挂载cdn文件,这里仅示例
# 'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js',
)
在static/js/custom.js 的函数
function show_pic(icon_url) {
let msg_html = `<img src="${icon_url}" width="400px" />`
// $alert接收3个参数,data,title,options
// options使用案例可以参考https://element.eleme.cn/#/zh-CN/component/message-box#options
self.parent.app.$alert(msg_html, '这里是title', {
dangerouslyUseHTMLString: true
})
}
这样就实现了点击头像展开大图的功能了,也可以通过挂载js扩展更多django admin的功能。
Vue挂载的一些东西实例