form.is_valid() 在第一次访问时没有运行?

瓦拉基奥

当页面第一次加载时,初始表单值被加载但if form.is_valid()没有运行(我从一些测试中肯定知道这一点)。为什么?

意见

def view(request):

    form = FilterForm(request.GET or None)
    question_list = []
    if form.is_valid():
        if form.cleaned_data['all_questions'] == True:
            question_list = Question.objects.all().order_by('date_created')
        else:
            # create appropriate queryset

形式

class FilterForm(forms.Form):

    all_questions = forms.BooleanField(initial=True, required=False)
    question_type_a = forms.BooleanField(initial=False, required=False)
    question_type_b = forms.BooleanField(initial=False, required=False)

解决方案:

只需要检查is_bound视图

def view(request):

    form = FilterForm(request.GET or None)
    question_list = []
    if not form.is_bound:
         question_list = Question.objects.all().order_by('date_created')
    if form.is_valid():
        if form.cleaned_data['all_questions'] == True:
            question_list = Question.objects.all().order_by('date_created')
        else:
            # create appropriate queryset
日光

这是预期的行为。当您第一次加载没有任何 GET 参数的页面时,表单尚未提交,因此任何字段都没有数据。None将传递给表单构造函数,因为它request.GET是空的。这意味着您已经初始化了一个未绑定的表单。

文档

绑定和未绑定表单之间的区别很重要:

  • 未绑定的表单没有与之关联的数据。当呈现给用户时,它将为空或包含默认值。
  • 绑定表单已提交数据,因此可用于判断该数据是否有效。如果呈现无效的绑定表单,它可以包含内联错误消息,告诉用户要更正哪些数据。

调用is_valid()未绑定的表单将始终返回False

您可能需要修改逻辑以检查is_bound()表单,并使用它来决定在表单没有数据时呈现什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:is_valid和form_valid之间的区别

来自分类Dev

Django形式is_valid在没有括号的情况下工作

来自分类Dev

Django 表单发布没有错误的数据,但未注册为“is_valid”

来自分类Dev

如何修复 'AttributeError:'Person' 对象在 Django is_valid() 方法中没有属性 '_default_manager'

来自分类Dev

即使所有字段都有值,django is_valid也会为模型形式返回false

来自分类Dev

即使所有字段都有值,django is_valid也会为模型形式返回false

来自分类Dev

Django 3:使用FileField和FloatField时,is_valid()始终为false

来自分类Dev

当简单形式在Django 1.6中无效时,is_valid()引发异常

来自分类Dev

必须使用 UserLoginForm 实例作为第一个参数调用未绑定的方法 is_valid() (什么都没有)

来自分类Dev

我从链接访问页面时第一次没有执行Javascript

来自分类Dev

从我这边检查带有is_valid属性的shapely.geometry.LinearRing对象的有效状态,错误或误解?

来自分类Dev

覆盖ModelForm is_valid函数

来自分类Dev

Override ModelForm is_valid function

来自分类Dev

react-hook-form-控制器在第一次更改时未更新

来自分类Dev

无法调用 `.is_valid()`,因为在实例化序列化器实例时没有传递 `data=` 关键字参数

来自分类Dev

“OnClick”功能在第一次点击时没有运行,需要第二次点击

来自分类Dev

第一次运行后没有运行CSS动画

来自分类Dev

django-rest-framework:不能调用`.is_valid()`,因为在实例化序列化程序实例时未传递`data =`关键字参数

来自分类Dev

我表单的is_valid方法返回false

来自分类Dev

Django-form_valid()没有响应

来自分类Dev

Firebase 存储下载在第一次运行中没有通过 swift

来自分类Dev

Xcode:我的用户位置在第一次运行模拟时没有显示,但是在第二次运行时显示

来自分类Dev

GridView第一次没有被点击

来自分类Dev

Favicon第一次没有出现

来自分类Dev

钩子第一次没有设置状态

来自分类Dev

javascript没有看到第一次点击?

来自分类Dev

GridView第一次没有被点击

来自分类Dev

没有第一次加载的数据

来自分类Dev

第一次尝试 RSepc 没有运气

Related 相关文章

  1. 1

    Django:is_valid和form_valid之间的区别

  2. 2

    Django形式is_valid在没有括号的情况下工作

  3. 3

    Django 表单发布没有错误的数据,但未注册为“is_valid”

  4. 4

    如何修复 'AttributeError:'Person' 对象在 Django is_valid() 方法中没有属性 '_default_manager'

  5. 5

    即使所有字段都有值,django is_valid也会为模型形式返回false

  6. 6

    即使所有字段都有值,django is_valid也会为模型形式返回false

  7. 7

    Django 3:使用FileField和FloatField时,is_valid()始终为false

  8. 8

    当简单形式在Django 1.6中无效时,is_valid()引发异常

  9. 9

    必须使用 UserLoginForm 实例作为第一个参数调用未绑定的方法 is_valid() (什么都没有)

  10. 10

    我从链接访问页面时第一次没有执行Javascript

  11. 11

    从我这边检查带有is_valid属性的shapely.geometry.LinearRing对象的有效状态,错误或误解?

  12. 12

    覆盖ModelForm is_valid函数

  13. 13

    Override ModelForm is_valid function

  14. 14

    react-hook-form-控制器在第一次更改时未更新

  15. 15

    无法调用 `.is_valid()`,因为在实例化序列化器实例时没有传递 `data=` 关键字参数

  16. 16

    “OnClick”功能在第一次点击时没有运行,需要第二次点击

  17. 17

    第一次运行后没有运行CSS动画

  18. 18

    django-rest-framework:不能调用`.is_valid()`,因为在实例化序列化程序实例时未传递`data =`关键字参数

  19. 19

    我表单的is_valid方法返回false

  20. 20

    Django-form_valid()没有响应

  21. 21

    Firebase 存储下载在第一次运行中没有通过 swift

  22. 22

    Xcode:我的用户位置在第一次运行模拟时没有显示,但是在第二次运行时显示

  23. 23

    GridView第一次没有被点击

  24. 24

    Favicon第一次没有出现

  25. 25

    钩子第一次没有设置状态

  26. 26

    javascript没有看到第一次点击?

  27. 27

    GridView第一次没有被点击

  28. 28

    没有第一次加载的数据

  29. 29

    第一次尝试 RSepc 没有运气

热门标签

归档