当前位置: 首页 > news >正文

做英文网站费用又有什么新病毒出现了

做英文网站费用,又有什么新病毒出现了,简单的管理系统,赣州网站开发django表单: 渲染表单模板。表单验证数据是否合法。 在App中新建的form.py表单文件: 1 from django import forms2 from django.core import validators3 from .models import User4 5 # 定义form表单,label:定义名字;error_messa…

django表单:

  1. 渲染表单模板。
  2. 表单验证数据是否合法。

 

在App中新建的form.py表单文件:

 1 from django import forms
 2 from django.core import validators
 3 from .models import User
 4 
 5 # 定义form表单,label:定义名字;error_messages:定义错误时内容的提示;(例1)
 6 class MesssageBoardForm(forms.Form):
 7     title = forms.CharField(max_length=10,min_length=2,label='标题',error_messages={'min_length':'最小不能少于两个字符','max_length':'不能超过十个字符'})
 8     content = forms.CharField(widget=forms.Textarea,label='内容',error_messages={'required':'必须传content字段'})
 9     email = forms.EmailField(label='邮箱',error_messages={'required':'必须传email字段'})
10     reply = forms.BooleanField(required=False,label='是否回复')
11 
12 # 可简化出错信息显示的内容,通用。
13 class BaseForm(forms.Form):
14     def get_errors(self):
15         errors = self.errors.get_json_data()
16         new_errors = {}
17         for key,message_dicts in errors.items():
18             messages = []
19             for message_dict in message_dicts:
20                 message = message_dict['message']
21                 messages.append(message)
22             new_errors[key] = messages
23         return new_errors
24 
25 # 进行注册信息的简单验证表单(例2)
26 class RegisterForm(BaseForm):
27     username = forms.CharField(max_length=20,min_length=2)
28     telephone = forms.CharField(validators=[validators.RegexValidator(r'1[345678]\d{9}',message='请输入正确的手机号码!')])
29     pwd1 = forms.CharField(max_length=16,min_length=6,error_messages={'max_length':'不能超过十六个字符','min_length':'不能小于六个字符'})
30     pwd2 = forms.CharField(max_length=16,min_length=6,error_messages={'max_length':'不能超过十六个字符','min_length':'不能小于六个字符'})
31 
32     def clean_telephone(self):
33         telephone = self.cleaned_data.get('telephone')
34         exists = User.objects.filter(telephone=telephone).exists()
35         if exists:
36             raise forms.ValidationError(message="%s已经被注册"%telephone)
37         return telephone
38 
39     def clean(self):
40         cleaned_data = super().clean()
41         pwd1 = cleaned_data.get('pwd1')
42         pwd2 = cleaned_data.get('pwd2')
43         if pwd1 != pwd2:
44             raise forms.ValidationError(message='两次密码不一致!')

 

视图文件:

 1 from django.shortcuts import render
 2 from django.views.generic import View
 3 from .forms import MesssageBoardForm,RegisterForm
 4 from django.http import HttpResponse
 5 from .models import User
 6 
 7 # 简单的表格格式(例1)
 8 class IndexView(View):
 9     # 将form传给html模板来生成一个表单的html代码;
10     # 使用form生成的代码填写格式与验证不对时会先提示,不运行;
11     def get(self,request):
12         form = MesssageBoardForm()
13         return render(request,'index.html',context={'form':form})
14 
15     # post提交时,使用form.is_valid判断提交的内容与form中定义的是否一致;
16     # cleaned_data:获取相应数据;
17     def post(self,request):
18         form = MesssageBoardForm(request.POST)
19         if form.is_valid():
20             title = form.cleaned_data.get('title')
21             content = form.cleaned_data.get('content')
22             email = form.cleaned_data.get('email')
23             reply = form.cleaned_data.get('reply')
24             print(title)
25             print(content)
26             print(email)
27             print(reply)
28             return HttpResponse('success')
29         else:
30             # 打印出错的详细内容
31             print(form.errors.get_json_data())
32             return HttpResponse('Fail')
33 
34 # 注册信息的验证(例2)
35 class RegisterView(View):
36     # 返回注册页面模板;
37     # 不使用form的表单生成的代码,验证不对时仍会运行,没有预先提示;
38     def get(self,request):
39         return render(request,'register.html')
40 
41     # 提交注册的数据
42     def post(self,request):
43         form = RegisterForm(request.POST)
44         # 验证通过
45         if form.is_valid():
46             username = form.cleaned_data.get('username')
47             telephone = form.cleaned_data.get('telephone')
48             User.objects.create(username=username,telephone=telephone)
49             return HttpResponse('注册成功')
50         else:
51             print(form.errors.get_json_data())
52             # 调用了BaseFrom模板后简化的出错信息;
53             print(form.get_errors())
54             return HttpResponse('注册失败')

 

例1模板:

 1 {# 简单的index.html模板 #}
 2 <form action="" method="post">
 3     <table>
 4         {{ form.as_table }}
 5         <tr>
 6             <td></td>
 7             <td><input type="submit" value="提交"></td>
 8         </tr>
 9     </table>
10 </form>

 

例2模板:

 1 {# 注册验证的模板 register.html #}
 2 <form action="" method="post">
 3     <table>
 4         <tr>
 5             <td>用户:</td>
 6             <td><input type="text" name="username"></td>
 7         </tr>
 8         <tr>
 9             <td>电话:</td>
10             <td><input type="text" name="telephone"></td>
11         </tr>
12         <tr>
13             <td>密码:</td>
14             <td><input type="password" name="pwd1"></td>
15         </tr>
16         <tr>
17             <td>重复密码:</td>
18             <td><input type="password" name="pwd2"></td>
19         </tr>
20         <tr>
21             <td></td>
22             <td><input type="submit" value="提交"></td>
23         </tr>
24     </table>
25 </form>

 

例2 models.py:

1 from django.db import models
2 
3 class User(models.Model):
4     username = models.CharField(max_length=20)
5     telephone = models.CharField(max_length=11)

 

url映射:

1 urlpatterns = [
2     path('', views.IndexView.as_view()),
3     path('register/',views.RegisterView.as_view())

 

 

ModelForm

  在表单中使用 ModelForm ,定义一个 Meta 类,如在该类中指定 model=User ,以及 fields="__all__" ,等于将 User 模型中所有的字段都复制过来,进行验证。则不需要在表单中重复模型中已有的字段,减少代码。

models.py文件:

1 from django.db import models
2 from django.core import validators
3 
4 class User(models.Model):
5     username = models.CharField(max_length=100,validators=[validators.MinLengthValidator(2)])
6     password = models.CharField(max_length=16,validators=[validators.MinLengthValidator(6)])
7     telephone = models.CharField(max_length=11,validators=[validators.RegexValidator(r'1[345678]\d{9}')])

 

 

forms.py文件:

 1 from django import forms
 2 from .models import User
 3 
 4 # 注册信息的验证:
 5 class BaseForm(forms.ModelForm):
 6     # 验证手机号是否存在;
 7     def clean_telephone(self):
 8         telephone = self.cleaned_data.get('telephone')
 9         exists = User.objects.filter(telephone=telephone).exists()
10         if exists:
11             raise forms.ValidationError('%s手机号已存在' % telephone)
12         return telephone
13 
14     # 验证用户名;
15     def clean_username(self):
16         username = self.cleaned_data.get('username')
17         exists = User.objects.filter(username=username).exists()
18         if exists:
19             raise forms.ValidationError('%s:用户名已被注册' % username)
20         return username
21 
22     # 验证密码;
23     def clean(self):
24         cleaned_data = super().clean()
25         pwd1 = cleaned_data.get('pwd1')
26         pwd2 = cleaned_data.get('pwd2')
27         if pwd1 != pwd2:
28             raise forms.ValidationError('两次密码不一样')
29         else:
30             return cleaned_data
31 
32 # 定义一个Meta类;
33 class RegisterForm(BaseForm):
34     pwd1 = forms.CharField(max_length=16,min_length=6,error_messages={'min_length':'不能小于6字符','max_length':'不能大于16字符'})
35     pwd2 = forms.CharField(max_length=16,min_length=6,error_messages={'min_length':'不能小于6字符','max_length':'不能大于16字符'})
36 
37     class Meta:
38         model = User
39         # fields = ['username','telephone']   # 只提取某些字段;
40         # fields = '__all__'             # 复制所有的字段;
41         exclude = ['password']        # 排除某个字段;
42         # 使用“errors_messages”定义错误信息
43         error_messages = {
44             'username':{
45                 'max_length':'不能超过100字符',
46                 'min_length':'不能小于2字符'
47             },
48             'telephone':{
49                 'invalid':'请输入正确的手机号码'
50             }
51         }

 

 

views.py文件:

 1 from django.shortcuts import render
 2 from django.http import HttpResponse
 3 from .forms import RegisterForm
 4 from django.views.decorators.http import require_POST
 5 
 6 # 验证完成可直接调用save方法,“commit=False”:只生成模型而不插入到数据库中;
 7 @require_POST
 8 def register(request):
 9     form = RegisterForm(request.POST)
10     if form.is_valid():
11         user = form.save(commit=False)
12         user.password = form.cleaned_data.get('pwd1')
13         user.save()
14         return HttpResponse('success')
15     else:
16         print(form.errors.get_json_data())
17         return HttpResponse('Fail')

 

转载于:https://www.cnblogs.com/liqiongming/p/10665659.html

http://www.hkea.cn/news/161861/

相关文章:

  • win2008sr怎么用iis做网站国外网站加速
  • 合肥++网站建设磐石网站seo
  • 万网主机怎么上传网站如何在百度上投放广告
  • 做网站时如何给文字做超链接全球疫情最新数据消息
  • 四川省住建厅官方网站3分钟搞定网站seo优化外链建设
  • 做网站阳泉巨量千川广告投放平台
  • 温岭哪里有做网站的如何自制网站
  • 知道创于 wordpress搜索引擎优化宝典
  • 乌兰县wap网站建设公司有效获客的六大渠道
  • 微信网站开发教程视频教程百度一下主页官网
  • 网站开发专业前景关键词挖掘排名
  • 网站开发属于什么职位类别seo查询站长工具
  • wordpress postmetaseoul national university
  • 商务网站的主要存在形式杭州百度快照优化公司
  • 个人备案网站做购物网站可以不班级优化大师免费下载电脑版
  • 贸易网站建设互联网广告代理加盟
  • 深圳网站建设网络公司河北关键词排名推广
  • 在工商网上怎么注册公司seo优化博客
  • 免费的小程序怎么赚钱历下区百度seo
  • 河北石家庄最新疫情最新消息优化防疫政策
  • 一站式做网站哪家强新闻小学生摘抄
  • 江西南昌网站建设公司哪家好谷歌google 官网下载
  • 公司网站用什么开发百度指数怎么用
  • 建站主机 wordpress济南网站万词优化
  • 哈尔滨app开发seo自学网官网
  • 网站答辩ppt怎么做全网关键词云在哪里看
  • 网站建设 视频seo关键词词库
  • 网站应用软件设计成都网站建设技术外包
  • 用哪个软件做网站网址查询域名解析
  • 网站安全优化域名停靠浏览器