Django 表单无效

Posted

技术标签:

【中文标题】Django 表单无效【英文标题】:Django form is not valid 【发布时间】:2013-09-14 19:54:29 【问题描述】:

我正在尝试提交一个表单,但它不会在视图中传递为 is_valid

表单使用我没有太多经验的forms.Modelforms。

我在模板中检查了 form.errors ,但没有收到任何回复。

感谢您的时间和专业知识

表格

class AddSubcategory(forms.ModelForm):
    class Meta:
        model = Subcategory
        fields = ['category']

    subcategory_name = forms.CharField(max_length=255)

查看

@login_required
@locationed
def add_subcategory(request, location):

    subcat_form = AddSubcategory(request.POST)

    if subcat_form.is_valid():

        submitted_subcat_name = subcat_form.cleaned_data['subcategory_name']

        selected_cat = subcat_form.cleaned_data['category']

            _, was_created = Subcategory.objects.get_or_create(name=submitted_subcat_name, category=selected_cat)


        return HttpResponseRedirect(reverse('manage_cat_subcat', args=(location.slug,)))
    else:
        cat_form = AddCategory()
        subcat_form = AddSubcategory()
        return render(request, 'inventory/manage_cat_subcat.html', 'location': location,'cat_form': cat_form,'subcat_form':subcat_form)

模板(表单)

<form class="form-inline" action="% url 'add_subcategory' location.slug %" method="post">

     % csrf_token %

            subcat_form.category

            subcat_form.subcategory_name

            <button class="btn btn-small" type="submit">Add Subcategory</button>    
        </form>

【问题讨论】:

【参考方案1】:

您在需要的字段中指定id, category and name,但您没有将它们放入模板的表单中。

你只有category and subcategory_name

您可以在模板中添加这两个元素或从字段列表中删除它们。

此外,您没有为表单指定操作,您应该提供表单数据应该发送到的视图。

【讨论】:

效果很好!感谢您的反馈! (我根据您的反馈对上面的问题进行了编辑) 很高兴它有帮助!有时 django 太神奇了,你需要深入研究代码。

以上是关于Django 表单无效的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Django 中的表单上使用脆表单过滤器时收到“无效表单:脆”错误,但仅在一个 django 应用程序中而不是另一个?

如何使用无效的 Django 表单跳转到锚点?

使用有效实例设置后 django 表单无效

如何使用无效标识符作为 django 表单字段名称

除非选中,否则带有 BooleanField 的 Django 表单始终无效

Django绑定表单无效,但未引发ValidationError