Django之form

单选按钮组
grade=forms.ChoiceField(label='grade',required=True,widget=forms.RadioSelect,choices=GRADE_CHOICES)
下拉列表框
grade=forms.ChoiceField(label='grade',required=True,widget=forms.Select,choices=GRADE_CHOICES)
复选按钮组
grade=forms.MultipleChoiceField(label='grade',required=True,widget=forms.CheckboxSelectMultiple(),choices=GRADE_CHOICES)

单复选框

CheckboxInput 

文本域
message = forms.CharField(label='留言内容',widget=forms.Textarea)

可多选的下拉列表框,,功能强大,占地大不太好看
SelectMultiple

 

复制代码
select 下拉列表框,单选
<p>
{% for radio in form.grade %}
<div class="form-group">
    {{ radio }}
</div>
{% endfor %}
</p>
文本域
message = forms.CharField(label='留言内容',widget=forms.Textarea)
表单和model联动,单选下拉对象manager,多选对象databases,上传文件attachment
class CreatetaskForm(forms.Form):
    creater = forms.CharField(label=u"创建者",widget=BootstrapUneditableInput())
    manager = forms.ModelChoiceField(queryset=Manager.objects.all(),required=True,label=u"项目负责人",error_messages={'required': u'必选项'},)  
    databases = forms.ModelMultipleChoiceField(queryset=Database.objects.order_by('id'),required=True,label=u"数据库",error_messages={'required': u'至少选择一个'},widget=forms.CheckboxSelectMultiple,)    
    sql = forms.CharField(required=False,label=u"执行SQL",widget=forms.Textarea(attrs={'placeholder':"请在表名前加上schema,如hospital要写成p95169.hospital",'rows':5,'style':"width:100%",}),)
    desc = forms.CharField(required=False,label=u"描述",widget=forms.Textarea(attrs={'placeholder':"如果不是执行SQL(如数据的导入导出等),一定要在描述里说清楚",'rows':5,'style':"width:100%",}),) 
    attachment = forms.FileField(required=False,label=u"附件",help_text=u"如果SQL文本过长,超过2000个字符,请上传附件")
    def clean(self):
        if not self.is_valid():
            raise forms.ValidationError(u"以下红色标记部分为必选项")
        elif self.cleaned_data['sql'] == u'' and self.cleaned_data['desc'] == u'' :
            raise forms.ValidationError(u"如果执行SQL为空,描述为必填项")
        else:
            cleaned_data = super(CreatetaskForm, self).clean() 
        return cleaned_data
# 单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
复制代码

 

 下拉列表默认值:

formfield = forms.ModelChoiceField(queryset=JdbcConfig.objects.all(), required=True,initial='master')

 

posted @   Mars.wang  阅读(190)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示