我已经通过'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 %}
为什么我们需要第二行和第三行?我们需要它们吗?
答案 0 :(得分:1)
很难确切地说出原因,因为原因可能很多。
但从广义上讲,可能是这两个字段可以通过javascript修改或访问客户端,然后也可以提交回服务器。
如果您没有这样做,那么您可能不需要它们:)但您可能不必担心在将更改保存到其他字段时不会覆盖这些值。
答案 1 :(得分:0)
检查生成的HTML。即使隐藏,这些字段也需要显示在HTML中,以便在表单提交时将它们发送到服务器。它们是“隐藏的”,而不是“缺席的”。 而且,的确,通常它们也由客户端javascript操纵,通常在其中放置值。