11

jQueryで機能を追加するため、ブロックのみを表示するウィジェットが必要です。ウィジェットの「メディア」クラスを介してJavaScriptとスタイルシートを含めようとしていますが、機能しません。

コードは次のとおりです。

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))

任意の提案や助けをいただければ幸いです

4

3 に答える 3

45

テンプレートにフォームメディアを実際にどこかに含めていますか?

{% block extrahead %}
  {{ form.media }}
{% endblock %}
于 2009-10-13T09:01:03.813 に答える
4

「class Media」のパスには、settings.MEDIA_URL が自動的に付加されます。だから、このようにしてみてください:

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

動作しない場合は、FireBug などを使用して、ブラウザーが css と javascript を読み込めるかどうかを確認することをお勧めします。

コメントに基づく: フォーム メディアをまったく読み込んでいないようです。テンプレートに追加してみてください:

{{ my_form.media }}

{% block subheader %} (またはスクリプトと css をロードしている場所) で、「my_form」はビューで作成されたフォーム インスタンスの名前です。

于 2009-10-13T07:07:38.253 に答える
0

マイナーな最適化: settings.MEDIA_URL をパスに追加する必要はありません。出力時に自動的に行われます。

于 2010-02-18T08:40:27.590 に答える