Dugen Chen 写了一篇很有帮助的文章,将 HTML5 验证中的“必需”属性添加到 Django 表单字段。 http://duganchen.ca/elegantly-adding-html5-validation-attributes-to-django-form-fields/
我还希望自动包含 HTML5 模式属性,这样如果这是我的表单:
class AccountEditForm(forms.Form):
email = forms.EmailField()
phone = forms.CharField(widget=forms.IntegerField)
然后将创建以下html:
<input type="email" name="email" id="id_email" required pattern="-email regex-" />
<input type="text" name="phone" id="id_phone" required pattern="-integer regex-" />
杜根使用了这种方法:
compose = lambda f, g: lambda *args, \
**kwargs: f(g(*args, **kwargs))
def html5_required(field):
if field.required != False:
field.widget.attrs['required'] = 'required'
return field
CharField = compose(html5_required, CharField)
这样一个表格仍然可以写成
class SampleForm(form):
text_field = CharField()
并且将适当添加“必需”属性
有人可以解释如何为模式属性做类似的事情。所有这些都可以用装饰器应用,这样这个烂摊子就可以放在其他地方吗?
理想情况下,是否有一组标准化的正则表达式模式来匹配每个 Django 表单字段,是否有人构建了一个小型库以轻松将其添加到 Django 中?
谢谢!