我们有一个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'}
)
)