1

古い django コードをメソッド ベースのビューからクラス ベースのビューに更新しています。

Media クラスを介してフォームにメディア (css/js) を含める方法を知っています

クラス ベースのビューにフォームが含まれていない場合、メディア クラスを使用するにはどうすればよいですか?

4

3 に答える 3

3

Django Sekizaiは次の目的で使用されます。

ドキュメントの例を次に示します。

{% load sekizai_tags %}

<html>
<head>
{% render_block "css" %}
</head>
<body>
Your content comes here.
Maybe you want to throw in some css:
{% addtoblock "css" %}
<link href="/media/css/stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
{% endaddtoblock %}
Some more content here.
{% addtoblock "js" %}
<script type="text/javascript">
alert("Hello django-sekizai");
</script>
{% endaddtoblock %}
And even more content.
{% render_block "js" %}
</body>
</html>

この例ではすべてが 1 つのテンプレートに含まれていますが、もちろん、継承またはインクルードによって複数のテンプレートに分割しaddtoblock、任意の部分テンプレートでディレクティブを使用できます。

より複雑な実際の例もドキュメントにあります。

于 2017-01-11T15:28:26.080 に答える
2

CreateViewUpdateView、およびに基づいてビューにメディアを追加するのに役立つ小さな mixin クラスを次に示しますDeleteView

class InjectFormMediaMixin(object):
    def get_form_class(self):
        form_class = super(InjectFormMediaMixin, self).get_form_class()
        if hasattr(self, 'Media') and not hasattr(form_class, 'Media'):
            form_class.Media = self.Media
        return form_class

例:

class CreateFooView(InjectFormMediaMixin, CreateView):
    model = models.Foo
    fields = (
        'name',
    )

    class Media:
        css = {
            'all': ('pretty.css',)
        }
        js = ('animations.js', 'actions.js')
于 2017-01-11T16:42:15.243 に答える