如何向Djangoxadmin添加自定义javascript?

2024-09-27 21:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

对于Django的股票(开箱即用)管理,添加自定义JavaScript非常简单:

class ContentAdmin(admin.ModelAdmin):
    model = Content

    class Media:
        js = ('js/content.js',)

在django1.8.4中运行得很好(已经测试过了)。在

现在我在我的项目中使用django-xadmin来增强用户界面/体验。问题是上面的代码没有将自定义JS添加到xadmin的视图中。在

查看了项目的自述文件“文档”(或缺少),甚至深入研究了源代码。我得到的最远的结果是发现重写get_media()方法实际上会将自定义JS添加到视图中,但由于它重写了父级的调用,所以其他xadmin的JS和css都没有加载。在

^{pr2}$

打印出:

#### MEDIA IS {'_css': {}, '_js': ['/static/admin/js/core.js', '/static/admin/js/admin/RelatedObjectLookups.js', '/static/admin/js/jquery.js', '/static/admin/js/jquery.init.js', '/static/admin/js/actions.js', 'js/content.js']}

我的自定义JS('js/content.js')肯定在那里并被加载,但是其他所有默认xadmin的CSS和JS都不见了。在

关于如何在不覆盖父级媒体属性的情况下添加自定义JS有什么想法吗?或者在覆盖时如何保持它?在


Tags: 项目django视图adminjsstaticxadmincontent
1条回答
网友
1楼 · 发布于 2024-09-27 21:26:13

看起来你没有正确地使用django-xadmin的管理接口。在

对于django-xadmin,您的管理对象不应该继承django的admin.ModelAdmin,而应该是object。当您在应用程序的adminx.py模块中执行xadmin.site.register(model,admin_class)操作时,django xadmin会根据插件和url模式动态生成(并缓存)实际类。在

你的adminx.py应该看起来像:

import xadmin
from .models import Content

class ContentAdmin(object):

    def get_media(self):
        # media is the parent's return value (modified by any plugins)
        media = super(ContentAdmin,self).get_media()
        media.add_js(('js/content.js',))
        return media

 xadmin.site.regsiter(Content,ContentAdmin)

相关问题 更多 >

    热门问题