古い django コードをメソッド ベースのビューからクラス ベースのビューに更新しています。
Media クラスを介してフォームにメディア (css/js) を含める方法を知っています
クラス ベースのビューにフォームが含まれていない場合、メディア クラスを使用するにはどうすればよいですか?
古い django コードをメソッド ベースのビューからクラス ベースのビューに更新しています。
Media クラスを介してフォームにメディア (css/js) を含める方法を知っています
クラス ベースのビューにフォームが含まれていない場合、メディア クラスを使用するにはどうすればよいですか?
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
、任意の部分テンプレートでディレクティブを使用できます。
より複雑な実際の例もドキュメントにあります。
CreateView
、UpdateView
、およびに基づいてビューにメディアを追加するのに役立つ小さな 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')