zoukankan      html  css  js  c++  java
  • Django--Form小结

    Django Form组件
    	1 验证
    	2 生成HTML(保留上次输入内容)
    	3 初始化默认值
    	
    FORM重点
    	-字段
    		ChoiceField   单选框
    		MultipleChoiceField  多选框
    		CharField
    		IntegerField
    		DecimalField  小数
    		DateField
    		DateTimeField
    		EmailField
    		GenericIPAddressField  IP
    		
    		RegexField  自定义正则
    		
    

      

    		
    Form组件扩展:
    	1 简单扩展
    		利用Form组件自带的正则扩展
    			a,方式一,这种可以写多个正则表达式
    			from django.forms import Form
    			from django.forms import widgets
    			from django.forms import fields
    			from django.core.validators import RegexValidator
    			
    			class MyForm(Form):
    				user = fields.CharField(
    					validators=[RegexValidator(r'^[0-9]+$','请输入数字'),RegexValidator(r'^159[0-9]+$','数字必须为159开头')]
    				)
    			
    			b,方式二,这种只能有一个正则表达式
    			from django.forms import Form
    			from django.forms import widgets
    			from django.forms import fields
    			from django.core.validators import RegexValidator
    			
    			class MyForm(Form):
    				user=fields.RegexField(r'^[0-9]+$')
    			
    		
    	2 基于原码流程的扩展
    	    单字段
    		from django.core.exceptions import NON_FIELD_ERRORS,ValidationError
    		class AjaxForm(forms.Form):
    			price = fields.CharField()
    			user_id = fields.IntegerField(
    				widget=widgets.Select()
    
    			)
    
    			def __init__(self, *args, **kwargs):  # 实时根据数据库更新,每次运行时,都会执行__int__(),得到choices
    				super(AjaxForm, self).__init__(*args, **kwargs)
    				self.fields['user_id'].widget.choices = models.UserInFo.objects.values_list('id', 'username')
    
    
    			#自定义方法,来判断输入的数据是否在数据库中存在
    			#自定义 clean_字段名
    			#必须有返回值 sell.clean_data['username]
    			#如果出错,直接raise ValidationError
    			def clean_username(self):
    				v = self.cleaned_data['username']
    				if models.UserInFo.objects.filter(username=v).count():
    					# 整体错了
    					# 自己详细错误信息
    					raise ValidationError('用户名已经存在')
    				return self.cleaned_data['username']
    
    			def clean_user_id(self):
    				return self.cleaned_data['user_id']
    
    		
    

      

    	3 整体错误的判断
    		
          def clean(self): value_dict = self.clean_data v1=value_dict.get('username') v2=value_dict.get('user_id') if v1== 'root' and v2==1: raise ValidationError('整体错误信息') return self.clean_data

      


  • 相关阅读:
    如何退出天擎
    git彻底删除或变更子模块
    湖北校园网PC端拨号算法逆向
    PPPoE中间人拦截以及校园网突破漫谈
    vscode打开django项目pylint提示has not "object" member
    从客户端取到浏览器返回的oauth凭证
    教程视频如何压制体积更小
    windows中的软链接硬链接等
    关于博客园和独立博客的一些打算
    拉勾抓职位简单小爬虫
  • 原文地址:https://www.cnblogs.com/lhqlhq/p/9184196.html
Copyright © 2011-2022 走看看