テンプレートをレンダリングし、次のテンプレートで使用可能なコンテキストの一部として設定するモデルにプロパティがあります。メソッドは次のとおりです。
models.py:
@property
def detail_body_rendered(self):
ctx = self.context()
link_ctx = template.Context({'the_message': self.message})
render_url = template.Template("{% load url from future %}<a href=\"{% url 'message_redirect' 'message' the_message.pk %}\">Click Here</a>").render(link_ctx)
ctx['link'] = render_url
return template.Template(self.message.detail_body).render(ctx)
これは、返された値がテンプレート システムを介して送信されている場合にうまく機能します。
inbox.html:
...
<div class="detail_message_body">{{ current_message.detail_body_rendered }}</div>
...
すべてが期待どおりに行われ、detail_body_rendered
プロパティはデータベースに保存されているタグをコンテキストに置き換え、リンクがページに表示されます。わーい。
シェルでも動作します。ただし、メッセージ オブジェクトが他の場所にあり、そのプロパティを要求すると、テンプレートが含まれている行でサイレントに失敗します。具体的には、% 記号が含まれているためです。それらを取り出せば問題ありません。
したがって、私の質問は 2 つあります。テンプレート ファイルまたはシェルを除くすべての場所で要求するとエラーが発生するのはなぜですか。エラー メッセージを詳細にして、ターミナル ウィンドウで窒息している理由を実際に確認するにはどうすればよいですか?