Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Django-窗体的首选编程设计,不违反DRY_Html_Django_Django Forms_Django Templates - Fatal编程技术网

Html Django-窗体的首选编程设计,不违反DRY

Html Django-窗体的首选编程设计,不违反DRY,html,django,django-forms,django-templates,Html,Django,Django Forms,Django Templates,我有一个应用程序,它使用一个客户填写并提交的表单,我们称之为formA。现在,我还有工作人员使用的相同表单,并呈现了一些附加字段。在我的forms.py中,我被迫将这些添加的字段包括到表单中,即使我不希望从客户的角度呈现这些字段,否则我不能对员工使用相同的表单 目前,我已经在模板中包含了忽略这些字段的逻辑,通过使用{%ifnotequal%}标记和字段。标签在字段上进行for循环迭代,我不希望忽略这些字段,但我觉得它变得太麻烦,难以阅读 我知道另一个选择是创建一个单独的表单,但我觉得这会违反DR

我有一个应用程序,它使用一个客户填写并提交的表单,我们称之为formA。现在,我还有工作人员使用的相同表单,并呈现了一些附加字段。在我的forms.py中,我被迫将这些添加的字段包括到表单中,即使我不希望从客户的角度呈现这些字段,否则我不能对员工使用相同的表单

目前,我已经在模板中包含了忽略这些字段的逻辑,通过使用
{%ifnotequal%}
标记和
字段。标签
在字段上进行for循环迭代,我不希望忽略这些字段,但我觉得它变得太麻烦,难以阅读

我知道另一个选择是创建一个单独的表单,但我觉得这会违反DRY


在这种情况下,是否有更好的方法重用表单?

您可以为客户和员工视图创建不同的表单,然后使用继承来避免重复

class BaseForm(forms.Form):
    field1 = forms.CharField()

class StaffForm(BaseForm):
    staff_field = forms.CharField()

class CustomerForm(BaseForm):
    customer_field = forms.CharField()

我会避免在模板中使用
{%ifnotequal%}
来决定是否显示字段——这样的逻辑不属于模板。

啊,出于某种原因,我甚至没有考虑使用继承。谢谢你的帮助!