python – Django模板中的隐藏字段

我已经通过’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)

好的,我知道,用户不会在表单中填写视图和喜欢,因此它们是隐藏的.
但是,在模板中,在表单内部我们有类似的东西:

            {% 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行?我们需要它们吗?

最佳答案 很难确切地说出原因,因为原因可能很多.

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

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

点赞