class SearchForm(forms.Form): host = fields.ChoiceField( choices=((None,'全部'),(1,'kvm1'),(2,'kvm2'),(3,'kvm3'),(4,'kvm4'),(5,'kvm5'),(9,'其它')), label='主机', label_suffix=':', required=False, widget=fields.Select( attrs={'class': 'form-control d-inline col-1', 'style': 'min-width: 100px;'}) #validators=[RegexValidator(r'[1-5]', '...')] ) name = fields.CharField(required=False, label='名称', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control d-inline col-2 font-weight-light', 'placeholder': '虚拟机名称', 'style': 'min-width: 130px;'})) ip = fields.CharField(required=False, label='IP', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control d-inline col-2 font-weight-light', 'placeholder': '虚拟机IP', 'style': 'min-width: 130px;'})) status = fields.ChoiceField( choices=((None, '全部'),(1,'运行中'),(2,'关闭'),(3,'不存在')), label='状态', label_suffix=':', required=False, widget=fields.Select( attrs={'class': 'form-control d-inline col-1', 'style': 'min-width: 100px;'}) ) description = fields.CharField(required=False, label='描述', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control d-inline col-2 font-weight-light', 'placeholder': '用途 or 备注', 'style': 'min-width: 130px;'}))
class InfoForm(Form): """完善信息Form""" # """修改信息Form""" activist_email = fields.EmailField( max_length=32, error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式有误!'}, widget=fields.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入邮箱"}) ) activist_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={'required': '手机号码不能为空', 'invalid': '手机号码格式有误!'}, widget=fields.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入手机号码"}) ) apply_date = forms.DateField( error_messages={'required': '申请入党日期不能为空'}, widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'date'}) ) voluntary_time = fields.IntegerField( error_messages={'required': '志愿时长不能为空!'}, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入正整数的时长"}) )
def __init__(self, attrs={}, date_format=None): attrs = dict(attrs, **{'class': 'date form-control'}) widgets = (fields.TextInput(attrs=attrs), fields.TextInput(attrs=attrs)) super(TimeRangeWidget, self).__init__(widgets, attrs)
class AddFrom(forms.Form): host = fields.ChoiceField( choices=((None, '请选择..'), (1, 'kvm1'), (2, 'kvm2'), (3, 'kvm3'), (4, 'kvm4'), (5, 'kvm5')), label='主机', label_suffix=':', widget=fields.Select( attrs={'class': 'form-control col-2'}), validators=[RegexValidator(r'[1-5]', '请选择待安装镜像的宿主机。')] ) ver = fields.ChoiceField( choices=((None, '请选择..'), (1, 'v59'), (2, 'v60'), (3, 'v70'), (4, 'v80')), label='系统版本', label_suffix=':', widget=fields.Select( attrs={'class': 'form-control col-2'}), validators=[RegexValidator(r'[1-5]', '请选择待安装镜像的版本类别。')] ) package = fields.CharField(label='镜像包', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control col-4', 'placeholder': '镜像包全称,如v59-rc01-006-marketing-20151119-iso.tar.gz', 'style': 'font-size: small'})) name = fields.CharField(label='虚拟机名称', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control col-4', 'placeholder': '请输入待创建的虚拟机名称', 'style': 'font-size: small'})) imgfile = fields.CharField(label='磁盘文件', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control col-4', 'placeholder': '请输入待创建的磁盘文件名称', 'style': 'font-size: small'})) ip = fields.CharField(label='IP', label_suffix=':', widget=fields.TextInput( attrs={'class': 'form-control col-4', 'placeholder': '请输入待指定的ip地址', 'style': 'font-size: small'}))
class ActivistInfoForm(Form): """积极分子信息修改Form""" activist_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空!', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) activist_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) activist_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={ 'required': '手机号码不能为空!', 'invalid': '手机号码格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入手机号码" })) activist_email = fields.EmailField( max_length=32, error_messages={ 'required': '邮箱不能为空!', 'invalid': '邮箱格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入邮箱" })) apply_date = forms.DateField(error_messages={'required': '申请入党日期不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) voluntary_time = fields.IntegerField( error_messages={'required': '志愿时长不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入正整数的时长" }))
class Meta: model = Lecture fields = ( 'name', 'week', 'course', 'url', ) widgets = { 'name': dj_field.TextInput(attrs={'class': 'form-control'}), 'week': dj_field.NumberInput(attrs={'class': 'form-control'}), 'course': widgets.Select(attrs={'class': 'form-control'}), 'url': dj_field.TextInput(attrs={'class': 'form-control'}) }
class Meta: model = User fields = ( 'email', 'password', 'first_name', 'last_name', ) widgets = { 'email': dj_field.EmailInput(attrs={'class': 'form-control'}), 'password': PasswordInput(attrs={'class': 'form-control'}), 'first_name': dj_field.TextInput(attrs={'class': 'form-control'}), 'last_name': dj_field.TextInput(attrs={'class': 'form-control'}) }
class LoginForm(Form): """登陆Form""" username = fields.CharField( max_length=32, error_messages={'required': '用户名不能为空'}, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入用户名" })) password = fields.CharField( max_length=32, error_messages={'required': '密码不能为空'}, widget=PasswordInput(attrs={ 'class': 'form-control', 'placeholder': "请输入密码" })) usertype = fields.ChoiceField(choices=( ('管理员', '管理员'), ('党员用户', '党员用户'), ('积极分子', '积极分子'), ), initial='管理员', widget=widgets.RadioSelect()) captcha = CaptchaField(error_messages={ 'invalid': '验证码输入有误,请重新输入', 'required': '验证码不能为空' })
class Meta: model = Course fields = ( 'name', 'description', 'start_date', 'end_date', ) widgets = { 'name': dj_field.TextInput(attrs={'class': 'form-control'}), 'description': dj_field.TextInput(attrs={'class': 'form-control'}), 'start_date': dj_field.TextInput(attrs={'class': 'datepicker form-control'}), 'end_date': dj_field.TextInput(attrs={'class': 'datepicker form-control'}) }
class TextLinkFormMixin(EntangledModelFormMixin): link_content = fields.CharField( label=_("Link Content"), widget=fields.TextInput(attrs={'id': 'id_name'}), # replace auto-generated id so that CKEditor automatically transfers the text into this input field help_text=_("Content of Link"), ) class Meta: entangled_fields = {'glossary': ['link_content']}
class AssetQuery(Form): search_key = fields.CharField( required=True, label=False, error_messages={'required': '请输入需要查询的用户'}, widget=fields.TextInput(attrs={ "placeholder": '请输入用户名', 'class': 'form-control search-query', }), )
class Asset_in(Form): asset_id_field = fields.CharField( label="资产编号", required=True, widget=fields.TextInput(attrs={ "class": "form-control", "readonly": True })) asset_status_field = fields.CharField(label="资产状态", initial=2, required=True, widget=widgets.Select) in_reason_field = fields.CharField(label="入库库原因", initial=2, required=True, widget=widgets.Select) store_place_field = fields.CharField(label="库存地点", initial=2, required=True, widget=fields.Select) admin_name_field = fields.CharField( label="库房管理员", required=True, widget=widgets.TextInput(attrs={ "class": "form-control", 'placeholder': "请输入库房管理员" })) remark_info = fields.CharField( label="备注信息", required=False, widget=widgets.TextInput(attrs={ "class": "form-control", 'placeholder': "请输入备注信息" })) def __init__(self, current_user, *args, **kwargs): super(Asset_in, self).__init__(*args, **kwargs) self.current_user = current_user self.fields[ 'asset_status_field'].widget.choices = models.InStock.objects.all( ).values_list('in_stock__id', 'in_stock__asset_status') self.fields['asset_status_field'].widget.attrs = { "class": "form-control" } self.fields[ 'in_reason_field'].widget.choices = models.InReasons.objects.all( ).values_list('in_reasons__id', 'in_reasons__in_out_reasons') self.fields['in_reason_field'].widget.attrs = {"class": "form-control"} self.fields[ 'store_place_field'].widget.choices = models.UserProfile.objects.get( username=current_user).store_place.all().values_list( 'id', 'store_place') self.fields['store_place_field'].widget.attrs = { "class": "form-control" }
class InfoForm(Form): """完善信息Form""" """修改信息Form""" admin_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入真实姓名(2-6个字)" })) admin_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) admin_email = fields.EmailField( max_length=32, error_messages={ 'required': '邮箱不能为空', 'invalid': '邮箱格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入邮箱" })) admin_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={ 'required': '手机号码不能为空', 'invalid': '手机号码格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入手机号码" }))
class PostForm(forms.Form): title = fields.CharField(max_length=255, required=True) description = fields.CharField(max_length=500, required=True) content = fields.TextInput() date = fields.DateField(required=True) def save(self, author): if self.is_valid(): post = Post(author_id=author.pk, **self.cleaned_data) post.full_clean() post.save()
def field(self, **extra): return self.field_type( label=self.name, initial=';'.join('%s:%s' % (comp.pk, comp.name) for comp in self.components), widget=fields.TextInput(attrs={ 'data-list': 'true', 'data-template': self.data['component'], }), required=False, **extra, )
class Meta: model = Item fields = ('text', ) widgets = { 'text': dj_fields.TextInput(attrs={ 'placeholder': 'Add a to-do', 'class': 'form-control input-lg' }) } error_messages = {'text': {'required': EMPTY_LIST_ERROR_MSG}}
class TransferInForm(Form): """党员转入Form""" username = fields.CharField( min_length=6, max_length=13, error_messages={ 'required': '用户名不能为空', 'invalid': '用户名格式有误,请重新输入' }, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入用户名(6-13位)" })) member_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空', 'invalid': '姓名格式有误,请重新输入' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) member_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) member_status = fields.ChoiceField(choices=(('正式党员', '正式党员'), ('预备党员', '预备党员')), initial='正式党员', widget=widgets.Select()) in_date = forms.DateField(error_messages={'required': '转入日期不能为空'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) come_from_party = fields.CharField( max_length=256, error_messages={'required': '转自组织内容不能为空'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入转自什么组织" }))
class PercentageField(fields.FloatField): widget = fields.TextInput(attrs={"class": "percentInput"}) def is_number(s): if s is None: return False try: float(s) return True except ValueError: return False def to_python(self, value): val = super(PercentageField, self).to_python(value) if self.is_number(val): return val / 100 return val def prepare_value(self, value): val = super(PercentageField, self).prepare_value(value) if self.is_number(val) and not isinstance(val, str): return str((float(val) * 100))
class AddMemberForm(Form): """添加成员Form""" username = fields.CharField( min_length=6, max_length=13, error_messages={ 'required': '用户名不能为空!', 'invalid': '用户名格式有误!' }, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入用户名(6-13位)" })) add_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空!', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) add_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) add_status = fields.ChoiceField(choices=(('正式党员', '正式党员'), ('预备党员', '预备党员'), ('积极分子', '积极分子')), initial='正式党员', widget=widgets.Select())
class ip_asset_form(forms.Form): name = fields.CharField( required=True, max_length=64, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='名称(网络号):', ) asset_code = fields.CharField( required=True, max_length=64, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='资产编码:', ) netmask = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='掩码:', # initial='请输入掩码', ) first_ip = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='开始IP:', # initial='请输入开始IP', ) end_ip = fields.GenericIPAddressField( required=True, widget=widgets.TextInput(attrs={'class': 'form-control'}), #error_messages={}, label='结束IP:', # initial='请输入结束IP', ) manufacturer = ModelChoiceField( queryset=models.Manufacturer.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='运营商:', initial=1) # status = ModelChoiceField( # queryset=dict(models.Asset.asset_status), # widget=widgets.Select(attrs={'class':'form-control'}), # label='状态:', # initial=0 # ) tag = ModelChoiceField( queryset=models.Tag.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='标签', initial=0) idc = ModelChoiceField( queryset=models.IDC.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='所属机房', initial=0) comments = fields.TextInput() admin = ModelChoiceField( queryset=models.User.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='管理人', initial=1, ) approved_by = ModelChoiceField( queryset=models.User.objects.all(), widget=widgets.Select(attrs={'class': 'form-control'}), label='审批者', initial=1, )
import re from django.forms import fields as all_fields from django.forms.models import fields_for_model FIELDS = {} for name in dir(all_fields): obj = getattr(all_fields, name) try: if issubclass(obj, all_fields.Field): FIELDS[name] = obj except TypeError: pass DEFAULT_FIELD = all_fields.TextInput() def as_field(obj): """ Make an object of type field :param obj: An object :return: A Field instance or a raised TypeError """ if isinstance(obj, all_fields.Field): # Field instances are returned as is return obj elif issubclass(obj, all_fields.Field): # Field types are instantiated with no arguments return obj() elif isinstance(obj, str) and (obj in FIELDS): # string class names are returned as instances return FIELDS[obj]() elif isinstance(obj, dict) and ("class" in obj) and ("kwargs" in obj) \
class MemberInfoForm(Form): """党员信息修改Form""" member_name = fields.RegexField( regex=r'^[\u4E00-\u9FA5]{2,6}$', max_length=32, error_messages={ 'required': '姓名不能为空!', 'invalid': '姓名格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入姓名(2-6个汉字)" })) member_gender = fields.ChoiceField(choices=(('男', '男'), ('女', '女')), initial='男', widget=widgets.Select()) member_phone = fields.RegexField( regex=r"^1[356789]\d{9}$", max_length=32, error_messages={ 'required': '手机号码不能为空!', 'invalid': '手机号码格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入手机号码" })) member_email = fields.EmailField( max_length=32, error_messages={ 'required': '邮箱不能为空!', 'invalid': '邮箱格式有误!' }, widget=fields.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入邮箱" })) member_status = fields.ChoiceField(choices=(('正式党员', '正式党员'), ('预备党员', '预备党员')), initial='正式党员', widget=widgets.Select()) first_date = forms.DateField(error_messages={'required': '入党日期不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) regular_date = forms.DateField(required=False, widget=forms.TextInput(attrs={ 'class': 'form-control', 'type': 'date' })) voluntary_time = fields.IntegerField( error_messages={'required': '志愿时长不能为空!'}, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入正整数的时长" })) come_from_party = fields.CharField( max_length=256, required=False, widget=forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': "请输入转自什么组织" }))