Django Form类清洗request.POST,出现数据丢失现象

1. 先说明一下我遇到的情况:  当在前端页面中POST提交的表单时,假设表单中有一个input标签,在后端定义了一个From类对request.POST进行清洗和验证,转换后的数据中中却不包含这个input的内容。 我就很迷,这咋回事啊。

POST函数的处理方法:

    def post(self, request):
        form = PerfectInfoForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            email = form.cleaned_data.get('email')
            job = form.cleaned_data.get('job')
            age = form.cleaned_data.get('age')
            avatar = form.cleaned_data.get('avatar')
            sex = form.cleaned_data.get('sex')

Form类的定义:

    class PerfectInfoForm(forms.Form,FormMixin):
        username = forms.CharField(max_length=100,min_length=1)
        email = forms.EmailField()
        job = forms.CharField(max_length=200)
        age = forms.IntegerField(min_value = 1)
        avatar = forms.URLField(max_length=200)
        sex = forms.IntegerField()

2. 问题解决: 

   本来request.POST中肯定是包含form表单中各个标签项的内容的,只不过在这一步: fpost = PerfectInfoForm(request.POST) 的时候丢失了信息,转换后的fpost变量中不在含有原本form表单中各个标签项的内容。

 出现这个问题的原因是: 前端中各个标签项的name属性没有和Form类中的名字保持一致。只要保持一致就fpost中就不会出现丢失变量的现象了。

3.Form的检验功能:

      if fpost.is_valid():  这条语句就是看提取的数据满不满足Form类定义时各个字段的属性要求。如果有一个不满足的话,fpost.is_valid()  返回假,并且给出了提示信息,通过 fpost.get_errors() 获取,返回是一个字典。

发布了341 篇原创文章 · 获赞 32 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41514525/article/details/103493301