使用许多Django表单的Kendo UI样式

时间:2016-10-18 18:31:08

标签: django kendo-ui

我们有一个Django项目,其中包含许多(100s)表单。我们希望将Kendo UI样式(http://demos.telerik.com/kendo-ui/styling/index)应用于我们的所有表单。这非常需要在适当的元素中添加类以获得样式。

实现这一结果的最佳方法是什么?我发现了两种主要方法,每种方法都有其缺点:

1 - 创建一个" Kendo表格" Django模板。对于每种类型的可能字段,此模板中都有大量逻辑。但是,这可能是应用程序作者使用的两个选项中更容易(仅在其页面上包含模板)。我们是否也会失去.as_p().as_table()等功能?

{% for hidden in form.hidden_fields %}
    {{ hidden }}
{% endfor %}

{% for field in form.visible_fields %}
    {% if field|is_choice %}
        <stuff class="niftyKendoClass"></stuff>
    {% elif field|is_radio %}
        <stuff class="niftyKendoClass"></stuff>
    ......
    {% endif %}
{% endfor %}

2 - 创建自定义&#34; Kendo Widgets&#34;通过继承Django的小部件(https://docs.djangoproject.com/en/1.9/ref/forms/widgets)。据我所知,这种技术的实现比模板更容易,因为我只需要CSS类,并且在大多数情况下可以重用Django的标记,但是随着表单声明变得更重,调用者变得更难。 / p>

class SomeForm(forms.Form):
    field = forms.CharField(widget=forms.KendoTextInput())

当然,这两个选项都是为了避免在所有Django应用程序中出现分散的类,如果我们更改表单的样式,那将非常痛苦。

class SomeForm(forms.Form):
    field = forms.CharField(
        widget=forms.TextInput(
            attrs={'class': 'niftyKendoClass'}
        )
    )

0 个答案:

没有答案