1

これは私のコードのスニペットです。

soup=BeautifulSoup(html_document)
tabulka=soup.find("table",width="100%")
dls=tabulka.findAll("dl",{"class":"resultClassify"})
tps=tabulka.findAll("div",{"class":"pageT clearfix"})
return render_to_response('result.html',{'search_key':search_key,'turnpages
':tps,'bookmarks':dls})

dls を確認しました。これは dict で、html ラベルが 1 つしか含まれていません

<dl>label contents contains some <dd> labels</dl>  

しかし、dls を render_to_response に渡した後、結果は正しくありません。result.html の対応するテンプレート コードは次のとおりです。

{% if bookmarks %}
{% for bookmark in bookmarks %}
{{bookmark|safe}}
{% endfor %}
{% else %}
<p>No bookmarks found.</p>
{% endif %}

出力結果の html には、次のような python 辞書形式が含まれています。

[<dd>some html</dd>,<dd>some html</dd>,<dd>some html</dd>,...]

これは、出力 html に表示されます。それはとても奇妙です。これは renfer_to_response のバグですか?

4

2 に答える 2

2

さて、dls一致するすべての要素のテキストを含む python リストです。render_to_responseはリストをどう処理するかわからないので、リストを文字列に変換するだけです。すべての要素を HTML として挿入する場合は、次のようにそれらを 1 つのテキストに結合してみてください。

dls = "".join(dls)

そうすることで、他のソースからライブ HTML を自分のページに貼り付けることになり、安全でない可能性があることに注意してください。(dds の 1 つに悪意のある Javascript が含まれている場合はどうなりますか?その HTML のプロバイダーを信頼しますか?)

于 2012-05-04T05:57:13.480 に答える
1

Django でテンプレートをレンダリングするときは、RequestContext インスタンスを使用する必要があります。

このように言う

return render_to_response('login.html',{'at':at}, context_instance = RequestContext(request))

これを使用するには、次のようにインポートする必要があります。

from django.template import RequestContext

これがうまくいくことを願っています。:)

于 2012-05-04T06:00:11.360 に答える