动态自定义Django表单小部件
具体来说,我想在字段无效时添加一个 error
类。这样渲染出来的效果应该是这样的:
<input type="text" name="email" class="error" />
下面这个例子看起来有点 hacky(不太正规),我也没见过其他实现这个的例子。
http://jj.isgeek.net/2010/10/27/add-error-class-to-widgets-with-errors-in-django-forms/
有没有办法全局覆盖默认的控件模板?我希望在字段是必填的情况下,能够有像 required(或者 html5 的 required 属性)这样的类,这样就可以先用 JavaScript 验证。随着新的 html5 输入类型的出现,我希望能在整数字段中使用 type="number"
。
我看过这些文档,但帮助不大。http://docs.djangoproject.com/en/dev/ref/forms/widgets/#customizing-widget-instances
编辑
显然,表单中有 required_css_class
和 error_css_class
。不过,我在使用 modelForms,这似乎不太管用。
1 个回答
1
很遗憾,除了你已经找到的那个小技巧,使用标准的django没有简单的方法。
有没有办法全局覆盖默认的组件模板呢?
这个问题现在在django开发者之间还在讨论中。
目前,最适合你的解决方案是使用一个由django核心开发者Carl开发的外部包:django-form-utils。这个包可以让你覆盖模板、添加任意的类以及包含字段组。
然后,在你的 forms.py
文件中加入以下内容:
from form_utils.forms import BetterModelForm as ModelForm