2018-09-25-Python全栈开发-day59-Form组件-自动渲染html文件

1。通过widget来修改标签样式

  

widget=widgets.Select(choices=[1,2,3])

2.常用标签示例

  multichoicefield

  

name=MultipleChoiceField(
        widget=widgets.SelectMultiple(
            attrs={
                'class1':'c1',
                'class2': 'c2',
                'class3': 'c3'
            }
        )
    )

  radio单选

  

gender=fields.ChoiceField(
        choices=[(1, '刚娘'), (2, '铁娘'), (3, '钢弹')],
        widget=widgets.RadioSelect

    )

choices的结构是,列表里面套元组,元组内有序号和响应的值

2.动态绑定数据

  当从数据库中获取数据后,当数据库数据更新之后,form能否自动更新数据。

  因为类属性在程序运行的时候就已经加载完成,当数据发生变化是,类属性的值不会发生改变。

  解决方法:用实例化继承父类,然后在实例属性中加入这些方法,每次刷新的时候都是完成一次实例化,可以进行数据刷新

class Form1(forms.Form):

    user=fields.CharField(
        max_length=7,
        min_length=4,
        required=True,
        error_messages={
            'max_length':'太长了'
        },
        label='haha',#会在user前面显示字符
        initial='alex1',#默认值,返回页面时直接显示的值,可作为提示
        localize=True,
        disabled=False,
        widget=widgets.Select()


    )
    gender=fields.ChoiceField(
        choices=[(1, '刚娘'), (2, '铁娘'), (3, '钢弹')],
        widget=widgets.RadioSelect

    )
    def __init__(self,*args,**kwargs):
        super(Form1, self).__init__(*args, **kwargs)
        self.fields['user'].widget.choices = models.Book.objects.values_list('price','name')



首先每次实例化的时候都会刷新一次,从数据库中拿东西,values_list得到的是列表形式,里面是元组,这里只是得到一个元组而已,赋给user这个标签的choice,然后在html中渲染体现

  

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9703909.html