python - Django 模板中的隐藏字段

标签 python django django-forms django-templates

我已经通过了“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 行?我们需要它们吗?

最佳答案

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

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

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

关于python - Django 模板中的隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682566/

相关文章:

django - 寻找具有良好文档管理功能的开源 CMS - 首选 Django

javascript - django 批量删除和添加多对多关系

python - ? : (urls. W005) URL 命名空间 'main' 不是唯一的。您可能无法反转此命名空间中的所有 URL

python - 在 Django 表单中处理优雅降级

python - 使用 matplotlib 调整图例中的线条颜色

python - Django 模板/ View 与轮播的问题

python - 当ttk.Button处于事件状态时,如何更改其前景色?

python - 你如何在cygwin下编译wxPython?

python - Django ModelForm 覆盖 __init__

python - Django 表单未以 HTML 呈现