django_Form|django_Form 设置标签样式

一、基本设置

  • from django.forms import widgets所有的插件配置
  • widget变量设置,widget = widgets.Textarea(attrs={'class':"c1"}),分别引用标签type属性,设置其css样式
  • 例子:
#注意跟上一篇文章不一样这里用了fields from django import forms from django.forms import widgets from django.forms import fields # Create your views here. class FM(forms.Form): user = fields.CharField( error_messages = {'required':'用户名不能为空'}, widget = widgets.Textarea(attrs={'class':"c1"}) )

  • Django内置字段如下
Field required=True,是否允许为空 widget=None,HTML插件 label=None,用于生成Label标签或显示内容 initial=None,初始值 help_text='',帮助信息(在标签旁边显示) error_messages=None,错误信息 {'required': '不能为空', 'invalid': '格式错误'} show_hidden_initial=False,是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直) validators=[],自定义验证规则 localize=False,是否支持本地化 disabled=False,是否可以编辑 label_suffix=NoneLabel内容后缀 CharField(Field) max_length=None,最大长度 min_length=None,最小长度 strip=True是否移除用户输入空白 IntegerField(Field) max_value=https://www.it610.com/article/None,最大值 min_value=None,最小值 FloatField(IntegerField) ... DecimalField(IntegerField) max_value=None,最大值 min_value=None,最小值 max_digits=None,总长度 decimal_places=None,小数位长度 BaseTemporalField(Field) input_formats=None时间格式化 DateField(BaseTemporalField)格式:2015-09-01 TimeField(BaseTemporalField)格式:11:12 DateTimeField(BaseTemporalField)格式:2015-09-01 11:12 DurationField(Field)时间间隔:%d %H:%M:%S.%f ... RegexField(CharField) regex,自定制正则表达式 max_length=None,最大长度 min_length=None,最小长度 error_message=None,忽略,错误信息使用 error_messages={'invalid': '...'} EmailField(CharField) ... FileField(Field) allow_empty_file=False是否允许空文件 ImageField(FileField) ... 注:需要PIL模块,pip3 install Pillow 以上两个字典使用时,需要注意两点: - form表单中 enctype="multipart/form-data" - view函数中 obj = MyForm(request.POST, request.FILES) URLField(Field) ... BooleanField(Field) ... NullBooleanField(BooleanField) ... ChoiceField(Field) ... choices=(),选项,如:choices = ((0,'上海'),(1,'北京'),) required=True,是否必填 widget=None,插件,默认select插件 label=None,Label内容 initial=None,初始值 help_text='',帮助提示 ModelChoiceField(ChoiceField) ...django.forms.models.ModelChoiceField queryset,# 查询数据库中的数据 empty_label="---------",# 默认空显示内容 to_field_name=None,# HTML中value的值对应的字段 limit_choices_to=None# ModelForm中对queryset二次筛选ModelMultipleChoiceField(ModelChoiceField) ...django.forms.models.ModelMultipleChoiceField TypedChoiceField(ChoiceField) coerce = lambda val: val对选中的值进行一次转换 empty_value=https://www.it610.com/article/''空值的默认值 MultipleChoiceField(ChoiceField) ... TypedMultipleChoiceField(MultipleChoiceField) coerce = lambda val: val对选中的每一个值进行一次转换 empty_value=https://www.it610.com/article/''空值的默认值 ComboField(Field) fields=()使用多个验证,如下:即验证最大长度20,又验证邮箱格式 fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),]) MultiValueField(Field) PS: 抽象类,子类中可以实现聚合多个字典去匹配一个值,要配合MultiWidget使用 SplitDateTimeField(MultiValueField) input_date_formats=None,格式列表:['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y'] input_time_formats=None格式列表:['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] FilePathField(ChoiceField)文件选项,目录下文件显示在页面中 path,文件夹路径 match=None,正则匹配 recursive=False,递归下面的文件夹 allow_files=True,允许文件 allow_folders=False,允许文件夹 required=True, widget=None, label=None, initial=None, help_text='' GenericIPAddressField protocol='both',both,ipv4,ipv6支持的IP格式 unpack_ipv4=False解析ipv4地址,如果是::ffff:192.0.2.1时候,可解析为192.0.2.1, PS:protocol必须为both才能启用 SlugField(CharField)数字,字母,下划线,减号(连字符) ... UUIDField(CharField)uuid类型 ...

  • Django内置插件:
TextInput(Input) NumberInput(TextInput) EmailInput(TextInput) URLInput(TextInput) PasswordInput(TextInput) HiddenInput(TextInput) Textarea(Widget) DateInput(DateTimeBaseInput) DateTimeInput(DateTimeBaseInput) TimeInput(DateTimeBaseInput) CheckboxInput Select NullBooleanSelect SelectMultiple RadioSelect CheckboxSelectMultiple FileInput ClearableFileInput MultipleHiddenInput SplitDateTimeWidget SplitHiddenDateTimeWidget SelectDateWidget

  • 常用插件
# 单radio,值为字符串 # user = fields.CharField( #initial=2, #widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),)) # ) # 单radio,值为字符串 # user = fields.ChoiceField( #choices=((1, '上海'), (2, '北京'),), #initial=2, #widget=widgets.RadioSelect # ) # 单select,值为字符串 # user = fields.CharField( #initial=2, #widget=widgets.Select(choices=((1,'上海'),(2,'北京'),)) # ) # 单select,值为字符串 # user = fields.ChoiceField( #choices=((1, '上海'), (2, '北京'),), #initial=2, #widget=widgets.Select # ) # 多选select,值为列表 # user = fields.MultipleChoiceField( #choices=((1,'上海'),(2,'北京'),), #initial=[1,], #widget=widgets.SelectMultiple # ) # 单checkbox # user = fields.CharField( #widget=widgets.CheckboxInput() # ) # 多选checkbox,值为列表 # user = fields.MultipleChoiceField( #initial=[2, ], #choices=((1, '上海'), (2, '北京'),), #widget=widgets.CheckboxSelectMultiple # )

    推荐阅读