0

我在渲染模板并将其设置为下一个模板可用的上下文的一部分的模型上有一个属性,方法如下:

模型.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)

如果返回值是通过模板系统发送的,这非常有用:

收件箱.html:

...
<div class="detail_message_body">{{ current_message.detail_body_rendered }}</div>
...

一切都按预期发生,该detail_body_rendered属性将存储在数据库中的标签替换为上下文,并且链接显示在页面上。耶。

它也适用于外壳。但是,如果我在其他任何地方有一个消息对象,并请求该属性,它会在包含模板的行上静默失败。具体来说,因为那里有 % 符号。如果我把它们拿出来,没问题。

所以我的问题是双重的,为什么当我在除模板文件或外壳程序之外的任何地方请求它时它会爆炸,以及如何使错误消息详细,以便我可以真正看到它为什么在终端窗口中阻塞?

4

0 回答 0