之前工作中有两次碰到这里,都感觉django-form与前端耦合很重。不知道是我不懂得合理的工作方式,还是这个工具本身的问题。求指点。
django-form有个参数叫widgets,通过这个参数,可以给form相应的字段添加一下html属性,使用css样式可以如下:
class CommentForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
url = forms.URLField()
comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'}))
>>> f = CommentForm(auto_id=False)
>>> f.as_table()
<tr><th>Name:</th><td><input type="text" name="name" class="special"/></td></tr>
<tr><th>Url:</th><td><input type="url" name="url"/></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" size="40"/></td></tr>
具体教程在这:https://docs.djangoproject.com/en/1.7/ref/forms/widgets/
django-form
还是挺好用的。题主说的耦合大概是觉得 django-form
生成的 template
不方便自定义吧
django-form
设计为了解决的痛点是表单的验证,也就是将你需呀 submit
的表单数据封装成一个 python
的对象,其中的技巧就是借助 python
的 class
与表单的映射。
简单说来,form class
只负责帮你在提交表单数据之后的验证工作。至于template如何写,完全可以自由发挥,最终你通过form submit
的表单字段,也即是 name
要和 form class
定义的字段相符合就OK啦
感觉还是自己写表单吧,Django form验证就行了,毕竟表单样式什么的自定义比较好