0

結果として Result オブジェクトのリストを作成する Python アプリを作成しました。オブジェクト 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 と次のボタンを備えたフォームです。そのため、ユーザーが結果を選択すると、追加の詳細が表示される別のページに転送されます。

これを正しく最もクリーンな方法で行う方法についてのアドバイスを探しています。どんなコメントでも大歓迎です。TNX

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 に答える