【问题标题】:JavaScript file not loaded in Django custom admin pageJavaScript 文件未在 Django 自定义管理页面中加载
【发布时间】:2017-05-02 01:15:37
【问题描述】:

我在我的 Django 管理站点中添加了一个包含表单的自定义页面。 为此,我编写了以下代码:

class MyForm(forms.Form):

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

    my_number = forms.IntegerField(
        required=True,
        min_value=1,
        max_value=10,
        label='Magic number'
    )

还有这段代码:

form = MyForm()
context = self.each_context(request)
context.update({'form': form})
return render(request, 'admin/players/foo.html', context)

我的问题是 JS 不执行/加载,因为如果我将以下单行放入其中,则没有任何反应:

alert('foo');

奇怪的是我在其他地方有一个非常相似的东西,它就像一个魅力:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('bar1', 'bar2',)
    search_fields = ('bar1',)

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

我在这两种情况下都检查了media 属性,我得到了这个:

<script type="text/javascript" src="/static/js/foo.js"></script>
<script type="text/javascript" src="/static/js/bar.js"></script>

所以至少,文件的路径是可以的。

我错过了什么?

更新: 根据接受的答案,我在模板中添加了以下几行:

{% block extrahead %}
    {{ form.media }}
{% endblock %}

【问题讨论】:

  • 这两个文件都出现在utils 文件夹下。但是您正尝试将其导入为js/foo.js。你有没有尝试像js/utils/foo.js 那样改变它?

标签: javascript python django forms media


【解决方案1】:

您需要将{{form.media}} 添加到foo.html 模板中。

【讨论】:

  • 你拯救了我的一天。非常感谢!
  • 糟糕...我的 JS 加载但现在我收到“django 未定义”错误...您是否也知道此问题的解决方案?
  • 谢谢。它确实起到了作用。但令我惊讶的是,当我自定义其他页面时,我不需要手动包含 jquery。它是自动包含在内的......无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2018-03-01
  • 2014-11-18
  • 2011-01-17
相关资源
最近更新 更多