Django 管理模板中的多个版本的 jQuery

Posted

技术标签:

【中文标题】Django 管理模板中的多个版本的 jQuery【英文标题】:Multiple versions of jQuery in Django admin template 【发布时间】:2011-06-11 10:53:21 【问题描述】:

没有指定任何内容,Django 1.2.4 管理模板包括 jQuery 1.4.2。我刚刚下载了 1.4.4 附带的 jQuery UI 框架。因此,我想使用 1.4.4 的 UI 框架。但是,我不确定如何从 Django 管理模板中删除它。在这种情况下我该怎么办?

class FooAdmin(admin.ModelAdmin):

    class Media:
        # this will cause both jQuery 1.4.2 and 1.4.4 to be included. Not sure if that's a problem or not.
        js = ("js/foo.js", "js/lib/jquery-1.4.4.min.js", "js/lib/jquery-ui-1.8.8.custom.min.js")

admin.site.register(Foo, FooAdmin)

【问题讨论】:

【参考方案1】:

您可以从 ModelAdmin 覆盖 _media 属性

这是 _media 形式的实际 django 代码。

class FooAdmin(admin.ModelAdmin):
    def _media(self):
        from django.conf import settings

        js = ['js/core.js', 'js/admin/RelatedObjectLookups.js',
              'js/jquery.min.js', 'js/jquery.init.js']
        if self.actions is not None:
            js.extend(['js/actions.min.js'])
        if self.prepopulated_fields:
            js.append('js/urlify.js')
            js.append('js/prepopulate.min.js')
        if self.opts.get_ordered_objects():
            js.extend(['js/getElementsBySelector.js', 'js/dom-drag.js' , 'js/admin/ordering.js'])

        return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js]) 
    media = property(_media)

但也许有更好的解决方案

【讨论】:

以上是关于Django 管理模板中的多个版本的 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

多个 Django 模板加载器

如何使用Django模板在javascript中访问ajax jquery中的模板变量

Django-jQuery 和标签?

如何强制 Django 使用 CDN 中的 select2 而不是本地管理员版本?

Django 模板使用带有 的 jquery 脚本

Django学习(2.2.1版本)