您的位置:首页 > 编程语言 > Go语言

Django-Form表单和ModelForm

2018-01-11 21:40 387 查看
1.form.py

from django import forms
from operation.models import UserAsk

class UserAskForm(forms.Form):
name = forms.CharField(required=True,min_length=2,max_length=20)
mobile = forms.CharField(required=True,min_length=11,max_length=11)
course_name = forms.CharField(required=True,min_length=5,max_length=50)

#类似DRf的序列化serializers表单
#下面的功能跟上面的一样
class AnotherUserForm(forms.ModelForm):
new_fields = forms.CharField(required=True)   #可继承字段并新增字段
class Meta:
model = UserAsk
# fields = "__all__"  # 取全部字段
fields = ('name', 'mobile', 'course_name', )  # 指定字段

#还可以定义自动保存到数据库,自动调用save方法。

2.View.py中可以直接调用save方法。其中AnotherUserForm已经改名为UserAskForm。

class AddUserAskView(View):
def post(self,request):
userask_form = UserAskForm(request.POST)
if userask_form.is_valid():
user_ask = userask_form.save(commit=True)


3.自定义ModelForm的字段验证,比如正则表达式验证手机号码是否合法。

class UserAskForm(forms.ModelForm):
# new_fields = forms.CharField(required=True)   #可继承字段并新增字段
class Meta:
model = UserAsk
# fields = "__all__"  # 取全部字段
fields = ('name', 'mobile', 'course_name', )  # 指定字段

#还可以定义自动保存到数据库,自动调用save方法。

#自定义mobile字段验证
def clean_mobile(self):
'''
验证手机号码是否合法
'''
mobile = self
4000
.cleaned_data['mobile']
#正则匹配手机号码
REGEX_MOBILE = "^1[358]\d{9}$|^147\d{8}$|^176\d{8}$"
p = re.compile(REGEX_MOBILE)
if p.match(mobile):
return mobile
#失败抛出自定义失败信息
else:
raise forms.ValidationError(u'手机号码非法',code='mobile_invalid')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: