我在模型上有一个属性,它渲染模板并将其设置为下一个模板可用的上下文的一部分,这里是方法:
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
属性用上下文替换存储在数据库中的标签,并在页面上显示链接。耶。
它也适用于shell。但是,如果我在其他任何地方都有一个消息对象,并请求该属性,它将在其中包含模板的行上无声地失败。具体来说,因为那里有%的迹象。如果我把它们拿走,没问题。
所以我的问题是双重的,当我在除模板文件或shell之外的任何地方请求它时,为什么它会爆炸,我如何使错误消息详细,以便我可以真正看到为什么它在终端中窒息窗口?