【问题标题】:Hidden fields in Django templateDjango模板中的隐藏字段
【发布时间】:2016-02-14 10:24:54
【问题描述】:

我已经通过了“Tango with Django”教程,但仍然没有得到一件事 - 为什么我们需要在 Django 模板中使用隐藏字段。

例如,如果我有代码

class CategoryForm(forms.ModelForm):
    name = forms.CharField(max_length=128, help_text="Please enter the category name.")
    views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    likes = forms.IntegerField(widget=forms.HiddenInput(), initial=0)

好的,我知道了,viewslikes 不会由用户在表单中填写,因此它们是隐藏的。 但是,在模板中,在表单内部我们有这样的内容:

            {% csrf_token %}
            {% for hidden in form.hidden_fields %}
                {{ hidden }}
            {% endfor %}

            {% for field in form.visible_fields %}
                {{ field.errors }}
                {{ field.help_text }}
                {{ field }}
            {% endfor %}

为什么我们需要第 2 行和第 3 行?我们需要它们吗?

【问题讨论】:

    标签: python django django-forms django-templates


    【解决方案1】:

    检查生成的 HTML。即使隐藏,这些字段也需要出现在 HTML 中,以便在表单提交时将它们发送到服务器。它们是“隐藏的”,而不是“不存在的”。 而且,实际上,它们也经常被客户端 javascript 操作,通常是为了在其中放置一个值。

    【讨论】:

      【解决方案2】:

      很难确切地说出原因,因为原因可能很多。

      但从广义上讲,可能是这两个字段可以通过javascript在客户端进行修改或访问,然后也可以提交回服务器。

      如果您不这样做,那么您可能不需要它们 :) 但是您可能不得不担心在保存对其他字段的更改时不会覆盖这些值。

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2011-01-06
        • 2011-09-13
        • 2011-06-08
        • 1970-01-01
        • 2014-12-22
        • 2013-03-05
        • 2016-05-31
        • 2011-02-16
        相关资源
        最近更新 更多