动态自定义Django表单小部件

2 投票
1 回答
841 浏览
提问于 2025-04-16 10:17

具体来说,我想在字段无效时添加一个 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_classerror_css_class。不过,我在使用 modelForms,这似乎不太管用。

1 个回答

1

很遗憾,除了你已经找到的那个小技巧,使用标准的django没有简单的方法。

有没有办法全局覆盖默认的组件模板呢?

这个问题现在在django开发者之间还在讨论中。

目前,最适合你的解决方案是使用一个由django核心开发者Carl开发的外部包:django-form-utils。这个包可以让你覆盖模板、添加任意的类以及包含字段组。

然后,在你的 forms.py 文件中加入以下内容:

from form_utils.forms import BetterModelForm as ModelForm

撰写回答