检查单个字段是否有效

时间:2018-04-01 20:40:00

标签: django django-views

我正在尝试检查表单中的图像字段是否有效,如果不是,则将其重置为“无”。我在views.py中的代码看起来像这样。我已经对这两行解释了我的意图,但没有效/工作。

def edit_user_profile(request):

    if request.method == 'POST':
        form = EditUserProfileForm(request.POST, request.FILES, instance=request.user.userprofile)

        if form.is_valid():
            form.save()            
            return redirect('/accounts/profile/websitesetup2/')

        else:
            if form.image.is_valid:         #not valid code (problem a)
                pass
            else:
                form.image = None           #not valid code (problem b)

            args = {'form': form}
            return render(request, 'accounts/page1.html', args)

    else:
        form = EditUserProfileForm(instance=request.user.userprofile)
        args = {'form': form}
        return render(request, 'accounts/page1.html', args)

我似乎无法弄清楚如何:

a)检查图像区域是否有效

b)将图像字段重置为无

我想这样做是为了在重新渲染表单时抛出错误的图像

https://imgur.com/3ap6eIq

如果您有任何想法,我们将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果图片字段有效,则应该在cleaned_data中,因此您可以尝试访问该图片,如果图片字段失败,请从图片错误中删除图片字段。这将再次呈现您的模板,但不会在图像字段呈现错误消息。这真的是你想要的吗?

if form.is_valid():
        form.save()            
        return redirect('/accounts/profile/websitesetup2/')

    else:
        try:
            # if we can access image in cleaned_data, it means it is valid
            form.cleaned_data['image']
        except KeyError:
            # if we get a KeyError, it means the image is not valid
            del form._errors['image']
        finally:
            args = {'form': form}
            return render(request, 'accounts/page1.html', args)