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

做网站可以不写代码网页设计页面跳转

做网站可以不写代码,网页设计页面跳转,网站建设合同要上印花税吗,jsp网站设计教学做一体化教程Django form表单 目录 普通方式手写注册功能 views.pylogin.html使用form组件实现注册功能 views.pylogin2.html常用字段与插件 initialerror_messagespasswordradioSelect单选Select多选Select单选checkbox多选checkboxDjango Form所有内置字段校验补充进阶 应用Bootstrap样式… Django form表单 目录 普通方式手写注册功能 views.pylogin.html使用form组件实现注册功能 views.pylogin2.html常用字段与插件 initialerror_messagespasswordradioSelect单选Select多选Select单选checkbox多选checkboxDjango Form所有内置字段校验补充进阶 应用Bootstrap样式批量添加样式 Form介绍  我们之前在HTML页面中利用form表单向后端提交数据时都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验比如校验用户是否输入输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 Django form组件就实现了上面所述的功能。 总结一下其实form组件的主要功能如下: 生成页面可用的HTML标签对用户提交的数据进行校验保留上次输入内容回到顶部 普通方式手写注册功能 views.py # 注册 def register(request):error_msg if request.method POST:username request.POST.get(name)pwd request.POST.get(pwd)# 对注册信息做校验if len(username) 6:# 用户长度小于6位error_msg 用户名长度不能小于6位else:# 将用户名和密码存到数据库return HttpResponse(注册成功)return render(request, register.html, {error_msg: error_msg}) login.html !DOCTYPE html html langen headmeta charsetUTF-8title注册页面/title /head body form action/reg/ methodpost{% csrf_token %}p用户名:input typetext namename/pp密码input typepassword namepwd/ppinput typesubmit value注册p stylecolor: red{{ error_msg }}/p/p /form /body /html 回到顶部 使用form组件实现注册功能 views.py 先定义好一个RegForm类 from django import forms# 按照Django form组件的要求自己写一个类 class RegForm(forms.Form):name forms.CharField(label用户名)pwd forms.CharField(label密码) 再写一个视图函数 # 使用form组件实现注册方式 def register2(request):form_obj RegForm()if request.method POST:# 实例化form对象的时候把post提交过来的数据直接传进去form_obj RegForm(request.POST)# 调用form_obj校验数据的方法if form_obj.is_valid():return HttpResponse(注册成功)return render(request, register2.html, {form_obj: form_obj}) login2.html !DOCTYPE html html langen headmeta charsetUTF-8title注册2/title /head bodyform action/reg2/ methodpost novalidate autocompleteoff{% csrf_token %}divlabel for{{ form_obj.name.id_for_label }}{{ form_obj.name.label }}/label{{ form_obj.name }} {{ form_obj.name.errors.0 }}/divdivlabel for{{ form_obj.pwd.id_for_label }}{{ form_obj.pwd.label }}/label{{ form_obj.pwd }} {{ form_obj.pwd.errors.0 }}/divdivinput typesubmit classbtn btn-success value注册/div/form /body /html 看网页效果发现 也验证了form的功能• 前端页面是form类的对象生成的                                      --生成HTML标签功能• 当用户名和密码输入为空或输错之后 页面都会提示        --用户提交校验功能• 当用户输错之后 再次输入 上次的内容还保留在input框   --保留上次输入内容 Form那些事儿 回到顶部 常用字段与插件 创建Form类时主要涉及到 【字段】 和 【插件】字段用于对用户请求数据的验证插件用于自动生成HTML; initial 初始值input框里面的初始值。 class LoginForm(forms.Form):username forms.CharField(min_length8,label用户名,initial张三 # 设置默认值)pwd forms.CharField(min_length6, label密码) error_messages 重写错误信息。 class LoginForm(forms.Form):username forms.CharField(min_length8,label用户名,initial张三,error_messages{required: 不能为空,invalid: 格式错误,min_length: 用户名最短8位})pwd forms.CharField(min_length6, label密码) password class LoginForm(forms.Form):...pwd forms.CharField(min_length6,label密码,widgetforms.widgets.PasswordInput(attrs{class: c1}, render_valueTrue)) radioSelect 单radio值为字符串 class LoginForm(forms.Form):username forms.CharField(min_length8,label用户名,initial张三,error_messages{required: 不能为空,invalid: 格式错误,min_length: 用户名最短8位})pwd forms.CharField(min_length6, label密码)gender forms.fields.ChoiceField(choices((1, 男), (2, 女), (3, 保密)),label性别,initial3,widgetforms.widgets.RadioSelect()) 单选Select class LoginForm(forms.Form):...hobby forms.fields.ChoiceField(choices((1, 篮球), (2, 足球), (3, 双色球), ),label爱好,initial3,widgetforms.widgets.Select()) 多选Select class LoginForm(forms.Form):...hobby forms.fields.MultipleChoiceField(choices((1, 篮球), (2, 足球), (3, 双色球), ),label爱好,initial[1, 3],widgetforms.widgets.SelectMultiple()) 单选checkbox class LoginForm(forms.Form):...keep forms.fields.ChoiceField(label是否记住密码,initialchecked,widgetforms.widgets.CheckboxInput()) 多选checkbox class LoginForm(forms.Form):...hobby forms.fields.MultipleChoiceField(choices((1, 篮球), (2, 足球), (3, 双色球),),label爱好,initial[1, 3],widgetforms.widgets.CheckboxSelectMultiple()) 关于choice的注意事项 在使用选择标签时需要注意choices的选项可以从数据库中获取但是由于是静态字段 ***获取的值无法实时更新***那么需要自定义构造方法从而达到此目的。 方式一 from django.forms import Form from django.forms import widgets from django.forms import fieldsclass MyForm(Form):user fields.ChoiceField(# choices((1, 上海), (2, 北京),),initial2,widgetwidgets.Select)def __init__(self, *args, **kwargs):super(MyForm,self).__init__(*args, **kwargs)# self.fields[user].choices ((1, 上海), (2, 北京),)# 或self.fields[user].choices models.Classes.objects.all().values_list(id,caption) 方式二 from django import forms from django.forms import fields from django.forms import models as form_modelclass FInfo(forms.Form):authors form_model.ModelMultipleChoiceField(querysetmodels.NNewType.objects.all()) # 多选# authors form_model.ModelChoiceField(querysetmodels.NNewType.objects.all()) # 单选 回到顶部 Django Form所有内置字段 FieldrequiredTrue, 是否允许为空widgetNone, HTML插件labelNone, 用于生成Label标签或显示内容initialNone, 初始值help_text, 帮助信息(在标签旁边显示)error_messagesNone, 错误信息 {required: 不能为空, invalid: 格式错误}validators[], 自定义验证规则localizeFalse, 是否支持本地化disabledFalse, 是否可以编辑label_suffixNone Label内容后缀CharField(Field)max_lengthNone, 最大长度min_lengthNone, 最小长度stripTrue 是否移除用户输入空白IntegerField(Field)max_valueNone, 最大值min_valueNone, 最小值FloatField(IntegerField)...DecimalField(IntegerField)max_valueNone, 最大值min_valueNone, 最小值max_digitsNone, 总长度decimal_placesNone, 小数位长度BaseTemporalField(Field)input_formatsNone 时间格式化 DateField(BaseTemporalField) 格式2015-09-01 TimeField(BaseTemporalField) 格式11:12 DateTimeField(BaseTemporalField)格式2015-09-01 11:12DurationField(Field) 时间间隔%d %H:%M:%S.%f...RegexField(CharField)regex, 自定制正则表达式max_lengthNone, 最大长度min_lengthNone, 最小长度error_messageNone, 忽略错误信息使用 error_messages{invalid: ...}EmailField(CharField) ...FileField(Field)allow_empty_fileFalse 是否允许空文件ImageField(FileField) ...注需要PIL模块pip3 install Pillow以上两个字典使用时需要注意两点- form表单中 enctypemultipart/form-data- view函数中 obj MyForm(request.POST, request.FILES)URLField(Field)...BooleanField(Field) ...NullBooleanField(BooleanField)...ChoiceField(Field)...choices(), 选项如choices ((0,上海),(1,北京),)requiredTrue, 是否必填widgetNone, 插件默认select插件labelNone, Label内容initialNone, 初始值help_text, 帮助提示ModelChoiceField(ChoiceField)... django.forms.models.ModelChoiceFieldqueryset, # 查询数据库中的数据empty_label---------, # 默认空显示内容to_field_nameNone, # HTML中value的值对应的字段limit_choices_toNone # ModelForm中对queryset二次筛选ModelMultipleChoiceField(ModelChoiceField)... django.forms.models.ModelMultipleChoiceFieldTypedChoiceField(ChoiceField)coerce lambda val: val 对选中的值进行一次转换empty_value 空值的默认值MultipleChoiceField(ChoiceField)...TypedMultipleChoiceField(MultipleChoiceField)coerce lambda val: val 对选中的每一个值进行一次转换empty_value 空值的默认值ComboField(Field)fields() 使用多个验证如下即验证最大长度20又验证邮箱格式fields.ComboField(fields[fields.CharField(max_length20), fields.EmailField(),])MultiValueField(Field)PS: 抽象类子类中可以实现聚合多个字典去匹配一个值要配合MultiWidget使用SplitDateTimeField(MultiValueField)input_date_formatsNone, 格式列表[%Y--%m--%d, %m%d/%Y, %m/%d/%y]input_time_formatsNone 格式列表[%H:%M:%S, %H:%M:%S.%f, %H:%M]FilePathField(ChoiceField) 文件选项目录下文件显示在页面中path, 文件夹路径matchNone, 正则匹配recursiveFalse, 递归下面的文件夹allow_filesTrue, 允许文件allow_foldersFalse, 允许文件夹requiredTrue,widgetNone,labelNone,initialNone,help_textGenericIPAddressFieldprotocolboth, both,ipv4,ipv6支持的IP格式unpack_ipv4False 解析ipv4地址如果是::ffff:192.0.2.1时候可解析为192.0.2.1 PSprotocol必须为both才能启用SlugField(CharField) 数字字母下划线减号连字符...UUIDField(CharField) uuid类型 Django Form内置字段 回到顶部 校验 方式一 from django.forms import Form from django.forms import widgets from django.forms import fields from django.core.validators import RegexValidatorclass MyForm(Form):user fields.CharField(validators[RegexValidator(r^[0-9]$, 请输入数字), RegexValidator(r^159[0-9]$, 数字必须以159开头)],) 方式二 import re from django.forms import Form from django.forms import widgets from django.forms import fields from django.core.exceptions import ValidationError# 自定义验证规则 def mobile_validate(value):mobile_re re.compile(r^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$)if not mobile_re.match(value):raise ValidationError(手机号码格式错误)class PublishForm(Form):title fields.CharField(max_length20,min_length5,error_messages{required: 标题不能为空,min_length: 标题最少为5个字符,max_length: 标题最多为20个字符},widgetwidgets.TextInput(attrs{class: form-control,placeholder: 标题5-20个字符}))# 使用自定义验证规则phone fields.CharField(validators[mobile_validate, ],error_messages{required: 手机不能为空},widgetwidgets.TextInput(attrs{class: form-control,placeholder: u手机号码}))email fields.EmailField(requiredFalse,error_messages{required: u邮箱不能为空,invalid: u邮箱格式错误},widgetwidgets.TextInput(attrs{class: form-control, placeholder: u邮箱})) 回到顶部 补充进阶 应用Bootstrap样式 !DOCTYPE html html langen headmeta charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1link relstylesheet href/static/bootstrap/css/bootstrap.min.csstitlelogin/title /head body div classcontainerdiv classrowform action/login2/ methodpost novalidate classform-horizontal{% csrf_token %}div classform-grouplabel for{{ form_obj.username.id_for_label }}classcol-md-2 control-label{{ form_obj.username.label }}/labeldiv classcol-md-10{{ form_obj.username }}span classhelp-block{{ form_obj.username.errors.0 }}/span/div/divdiv classform-grouplabel for{{ form_obj.pwd.id_for_label }} classcol-md-2 control-label{{ form_obj.pwd.label }}/labeldiv classcol-md-10{{ form_obj.pwd }}span classhelp-block{{ form_obj.pwd.errors.0 }}/span/div/divdiv classform-grouplabel classcol-md-2 control-label{{ form_obj.gender.label }}/labeldiv classcol-md-10div classradio{% for radio in form_obj.gender %}label for{{ radio.id_for_label }}{{ radio.tag }}{{ radio.choice_label }}/label{% endfor %}/div/div/divdiv classform-groupdiv classcol-md-offset-2 col-md-10button typesubmit classbtn btn-default注册/button/div/div/form/div /divscript src/static/jquery-3.2.1.min.js/script script src/static/bootstrap/js/bootstrap.min.js/script /body /html Django form应用Bootstrap样式简单示例 批量添加样式 可通过重写form类的init方法来实现。 class LoginForm(forms.Form):username forms.CharField(min_length8,label用户名,initial张三,error_messages{required: 不能为空,invalid: 格式错误,min_length: 用户名最短8位}...def __init__(self, *args, **kwargs):super(LoginForm, self).__init__(*args, **kwargs)for field in iter(self.fields):self.fields[field].widget.attrs.update({class: form-control}) 批量添加样式 ModelForm form与model的终极结合。 class BookForm(forms.ModelForm):class Meta:model models.Bookfields __all__labels {title: 书名,price: 价格}widgets {password: forms.widgets.PasswordInput(attrs{class: c1}),}  class Meta:下常用参数 model models.Student # 对应的Model中的类 fields __all__ # 字段如果是__all__,就是表示列出所有的字段 exclude None # 排除的字段 labels None # 提示信息 help_texts None # 帮助提示信息 widgets None # 自定义插件 error_messages None # 自定义错误信息 转载于:https://www.cnblogs.com/chenyibai/p/9807131.html
http://www.pierceye.com/news/648462/

相关文章:

  • 门户网站 源码网站建设推广公司范围
  • 网站字体大小wordpress用户登录页面
  • 影院禁止18岁以下观众入内宿迁新站seo
  • 龙岗网站设计机构网站开发开始阶段的主要任务包括( )。
  • 宿州公司网站建设教做世界美食的网站
  • 网站建设价格很 好乐云seo免费自学编程
  • 网站哪家做的好公共资源交易中心级别
  • html5网站开发工具自己做微信电影网站怎么做
  • 学院网站制度建设成品大香伊煮蕉免费在线
  • 做网站的域名和空间是什么意思佛山建站专
  • 网站是哪个公司做wordpress 底部修改插件
  • 嘉兴网站推广优化印度vps
  • 网站seo诊断分析和优化方案青岛网站制作方案
  • 发布个人免费网站的一般流程图宣传广告
  • php学什么可以做网站po wordpress
  • 875网站建设怎么样网站设计高端网站设计
  • qq钓鱼网站怎么制作扬州网站建设哪个好薇
  • 域名和网站空间怎么做解析南阳seo网站推广费用
  • 烟台企业网站建设国内ui网站有哪些
  • 手机网站建设选 朗创营销电商运营的核心公式
  • seo网站排名软件飞机网页设计实训报告
  • 禹城做网站做网站的教科书
  • 基木鱼建站公众号怎么做网站
  • 无水印做海报的网站百度技术培训中心
  • 如何在阿里云上做网站现在最流行的网站开发工具
  • 济宁网站建设联系方式漳州本地网
  • 口腔网站建设wordpress顶部提示
  • 葫芦岛做网站公司如皋网站开发公司
  • 国外开源 企业网站服务好质量好的网站制作
  • sql网站的发布流程品牌建设是什么意思