Django 如何创建一个自定义的;如“表()”;表格的方法?

Django 如何创建一个自定义的;如“表()”;表格的方法?,django,django-forms,Django,Django Forms,我有一个相对复杂的表单,在我的网站上的多个地方使用(事实上,它是许多其他表单类继承的表单)。在模板中,此表单的继承部分的格式始终相同,但其中涉及到某些格式;在模板中手动渲染和定位每个字段 这意味着显示此表单的每个模板都有许多相同的HTML标记,可以适当地呈现表单 我想创建一个可以调用的自定义输出,类似于as\u table()方法。我知道可以覆盖正常行、错误行等属性,但此表单的格式超出了这一范围(例如,表单的五个字段中的三个应并排打印,并带有组合标题)。我看到的所有教程/回答的问题都涉及覆盖上述

我有一个相对复杂的表单,在我的网站上的多个地方使用(事实上,它是许多其他表单类继承的表单)。在模板中,此表单的继承部分的格式始终相同,但其中涉及到某些格式;在模板中手动渲染和定位每个字段

这意味着显示此表单的每个模板都有许多相同的HTML标记,可以适当地呈现表单

我想创建一个可以调用的自定义输出,类似于
as\u table()
方法。我知道可以覆盖
正常行
错误行
等属性,但此表单的格式超出了这一范围(例如,表单的五个字段中的三个应并排打印,并带有组合标题)。我看到的所有教程/回答的问题都涉及覆盖上述属性,或者给出如何手动渲染表单的说明

起初,我是这样想的:

Class StrangeForm(form.Forms):
....
    def as_table_custom():
        html_string = "\
           <tr><td>Title 1:</td><td>self.fields['field1']</td><tr>\
           <tr><td>Title 2:</td><td>self.fields['field2']</td><tr>\
           <tr><td>Titles 3, 4, 5:</td><td>self.fields['field3']\
           </td><td>self.fields['field4']</td><td>self.fields['field5']</td></tr>\
        "
    return html_string
类表单(form.Forms):
....
def as_table_custom():
html_字符串=”\
标题1:self.fields['field1']\
标题2:self.fields['field2']\
标题3、4、5:自我域['field3']\
self.fields['field4']self.fields['field5']\
"
返回html\u字符串
但是,在阅读了的
\u html\u output()
as\u table()
方法之后,看起来不会那么容易。如果我从零开始写这篇文章,我想我必须以某种方式解释错误、帮助文本等


是否有一种简单的方法可以覆盖表单的HTML输出,如上面所述?或者我必须从头开始重新写东西。如果是后者,我如何解释我需要解释的所有事情

我不会采取这种方法。最好是在HTML模板中创建表单,该模板包含在各种模板中,在这些模板中,您希望以这种方式显示表单

因此,创建一个my_strange_form.html模板,假设在上下文中传递了一个具有正确字段数的“form”对象。在该模板中,只需使用
{{field.label_tag}}
{{field}}
创建HTML。您可以使用
{%for表单%}
中的字段循环,并使用
{{{forloop.counter}}
检查循环的计数器。我预见了大量的
{%if-forloop.counter…%}
语句来生成组合行,它看起来很难看,但您只需要看一次:-)


然后,在您的主模板中,
{%include'my_strange_form.html',form=form%}

为什么不将模板代码提取到一个单独的文件中,并在必要时将其删除?