Django的窗口小部件媒体不起作用(Django Widget Media doesn't

2019-08-17 22:35发布

我需要一个小部件,它应该只显示一个块,因为我会用jQuery添加功能。 我想包括JavaScript和样式表槽“媒体”类的Widget,并没有为我工作。

下面是代码:

class StarsWidget(Widget):
    """
    Widget with stars for rating
    """
    class Media:
        js = (
                settings.MEDIA_URL + 'js/rating.js',
              )

        css = {
                'screen': (
                    settings.MEDIA_URL + 'css/rating.css',
                    )
              }


    def render(self, name, value, attrs=None):
        if value is None: value = ''

        attrs = {'id':'ratingX', 'class':'rating'}
        final_attrs = self.build_attrs(attrs, name=name)
        if value != '':
            # Only add the 'value' attribute if a value is non-empty.
            final_attrs['value'] = force_unicode(value)
        return mark_safe(u'<div %s ></div>' % flatatt(final_attrs))

任何建议或帮助将不胜感激

Answer 1:

你实际上包括在任何地方你的模板形式的媒体?

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


Answer 2:

在“流媒体”的路径会自动与settings.MEDIA_URL前缀。 因此,尝试这样的:

class Media:
    js = ('js/rating.js',)
    css = {'screen': ('css/rating.css',),}

如果它不会工作,我建议使用萤火虫或类似的东西和检查,如果浏览器是能够加载CSS和JavaScript。

基于评论:看起来,你是不是装的形式的媒体都没有。 尝试添加模板:

{{ my_form.media }}

在{%块子标题%}(或任何你加载脚本和CSS),其中“my_form”是你的表单实例,在视图中创建的名称。



Answer 3:

次要优化:你并不需要预先settings.MEDIA_URL到你的路,它会自动当它打印出来完成。



文章来源: Django Widget Media doesn't work