37、python_django_web开发_由form进化到ModelForm与Ajax表单提交_笔记
ModelForm Model与form之间的定义很相似 django可以把model转换成form Modelform可以从model里拿字段也可以自己新增字段 如果你的FORM表单十分贴近数据Model,那么可以用ModelForm来节省大量代码。例如,如果数据模型中需要有3个字段,而且3个字段恰好都需要通过form来提交,那么使用ModelForm省时省力。同时,ModelForm也支持用户的自定义
如果你声明 save(commit=False),那么它就会返回一个还未保存至数据库的对象,这样的话 你可以用这个对象添加一些额外的数据,然后在用save()保存到数据库
是一种异步的操作 是Ajax操作 不会刷新我们的页面 返回json 不返回新页面
Ajax用户表单提交 自定义字段验证
- <font size="4"><script>
- $(function () {
- $('#jsStayBtn').on('click', function () {
- $.ajax({
- cache:false,
- type:"POST",
- url:"{% url 'org:user_ask' %}",
- data:$('#jsStayForm').serialize(),
- async:true,
- success: function (data) {
- console.log(data)
- {# alert(data)#}
- if(data.status == 'success'){
- $('#jsStayForm')[0].reset();
- alert('提交成功')
- }else if(data.status == 'fail'){
- $('#jsCompanyTips').html(data.msg)
- }
- }
- })
- })
- })
- </script>
- def clean_mobile(self):
- """
- 对mobile进行验证正则匹配
- :return:
- """
- mobile = self.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')</font>
复制代码
|