0

我编写了一个 python 应用程序,结果创建了一个 Result 对象列表。我编写了一个方法,该方法使对象 Result 的 html 表示,显示其主要属性。

class Result():

    def to_html(self):
        num_of_exp = "Number of exponentials: %s"% self.number_of_exponentials
        function = "Function: %s"% self.function
        par_of_exp = "Parameters of exponentials: <br /> %s "% pprint.pformat(self.parameters_of_exponentials)
        chunk = "Chunk: <br /> %s"% pprint.pformat(self.chunk)
        backgrnd = "Background <br /> %s" % pprint.pformat(self.background)
        raw_par_of_exp = "Raw parameters of exponentials: <br /> %s"% pprint.pformat(self.raw_parameters)
        non_phy = "Non physical solution:  %s" % pprint.pformat(self.non_physical_solution)
        user_choice = "User choice:  %s" %  pprint.pformat(self.user_choice)

        output = (function + r"<br /><br />" + num_of_exp + r"<br /><br />"+ par_of_exp + r"<br /><br />" + 
              backgrnd+ r"<br /><br />" + non_phy + r"<br /><br />"
              )

        return output

我正在使用 Django 为应用程序创建 Web 界面。

我制作了一个 Django 模板:

...
<body>

{% for result in result_list %}
{{result.to_html}}
{% endfor %}


</body>

并添加了 return render_to_response('result_pick.html',{'result_list': rp.parsed_output_data })

其中 rp.parsed_output_data 是 Result 对象的列表(列表的大小不固定)。

我得到的输出完全忽略了 to_html() 中的 html 标签。输出的 HTML 源代码:

Function: 98.627732*2.71828182845905**(-0.016052058*t)&lt;br /&gt;&lt;br /&gt;Number of exponentials: 1&lt;br ... ...

作为最终结果,我必须得到的是 Result 对象的表示,它以一种很好的人类可读格式显示,每个对象都有自己的 div 和带有下一步按钮的表单。因此,当用户选择一个结果时,他将被转移到另一个页面,其中显示了其他详细信息。

我正在寻找有关如何以正确和最干净的方式执行此操作的建议。任何评论表示赞赏。肿瘤坏死因子

4

1 回答 1

1

为了安全起见,Html 标签被忽略/自动转义,请参见此处此处

正确的方法是通过 django 模板系统而不是对象本身构建 html 输出,例如:

<body>

{% for result in result_list %}
Function: {{ result.function }}<br /><br />
Number of exponentials: {{ result.number_of_exponentials }}<br /><br />
...
{% endfor %}

</body>
于 2012-06-19T20:58:44.627 回答