# pip install pillow 实现验证码的功能 # 这个Form就是为前端准备的Form,Model是orm关系的model,这个两个分开,虽然创造的方式是一样的 class DBForm(DForms.Form): # 对应的是两个框 host = fields.CharField() host_type = fields.IntegerField( # 插件,插件需要满足的类型 # widget=widgets.Select(choices=[(0, 'SH'), (1, 'BJ')]), # values获取的是一个字典,values_list获取的是一个元组,要写上相应的数据库中的字段 # 这里获取设置的是一个下拉框的形式 # 这个只执行一次 widget=widgets.Select(choices=models.UserType.objects.all().values_list('id', 'caption')), ) # 解决延迟加载的问题,不需要重新去启动程序 def __init__(self, *args, **kwargs): super(DBForm, self).__init__(*args, **kwargs) self.fields['host_type'].widget.choices = models.UserType.objects.all().values_list('id', 'caption')
""" 在java中就相当于Vo,专门用于用户传入的数据的校验 """ def db(request): if request.method == "GET": obj = forms.DBForm() return render(request, "db.html", {'obj': obj}) if request.method == "POST": obj = forms.DBForm(request.POST) obj.is_valid() print(obj.clean()) print(obj.errors.as_json()) return render(request, "db.html", {'obj': obj})
#做一些限制处理
class IndexForm(forms.Form): user = forms.CharField(min_length=6, error_messages={'required': '用户名不能为空', 'min_length': '用户名长度不能小于6'}) email = forms.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})