Form 组件动态绑定数据

1、Form 组件的作用:

  a.对用户提交的数据进行验证(form表单/ajax)

  b.保留用户上次输入的信息

  c.可以生成html标签(input表单类的标签)

2..由于form组件中每个字段都是类的数据属性(全局变量),在类每次实例化之后,数据属性不会发生改变,会保留上次的更新结果

导致无法动态显示数据库的内容:

from django.shortcuts import render
from django import forms
from django.forms import fields,widgets
from app01.models import Userinfo
from app01 import models
class CForm(forms.Form):
    username=fields.CharField(max_length=10,
                              min_length=6,
                              required=True,
                              error_messages={'max_length':'长度超过10位',
                                            'min_length':'长度少于6位',
                                            'required':'需要输入',},)
    user_id=fields.IntegerField(widget=widgets.Select(choices=models.Userinfo.objects.values_list('id','username')),)#数据库中提取id和username
def index(request):
    obj=CForm() #对Form 进行实例化
    return render(request,'index.html',locals())  
该方法在类每次实例化之后,数据属性不会发生改变,会保留上次的更新结果导致无法动态显示数据库的内容:

对应的解决办法:

class CForm(forms.Form):
    username=fields.CharField(max_length=10,
                              min_length=6,
                              required=True,
                              error_messages={'max_length':'长度超过10位',
                                            'min_length':'长度少于6位',
                                            'required':'需要输入',},)
    user_id=fields.IntegerField(widget=widgets.Select())
    def __init__(self,*args,**kwargs):
        super(CForm,self).__init__(*args,**kwargs)
        self.fields['user_id'].widget.choices=models.Userinfo.objects.values_list('id','username')#数据库中提取id和username
def index(request):
    obj=CForm() #对Form 进行实例化
    return render(request,'index.html',locals())

其他关于form组件的相关资料链接:https://www.cnblogs.com/sss4/p/7112546.html

转载于:https://www.cnblogs.com/dushangguzhousuoli/p/10976519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值