在TextField中渲染django应用程序

时间:2012-07-12 08:37:22

标签: python django

我正在创建一个显示文章的应用程序。在我的模型中,我有一个TextField,它将包含文章的内容。

现在我希望能够在我的文章中呈现另一个应用程序。假设我有一个民意调查应用程序,我想在文章中间显示一个民意调查。我怎么能这样做?

我尝试在帖子中添加{% render_poll 42 %},但正如预期的那样,它只是在生成的页面中显示。

我应该创建某种标记(比如说[poll=42])并在显示渲染的html页面之前解析它吗? (我使用markdown库,也许我可以扩展它。)我怎么能这样做才能保持友好" django友好"办法 ?我想要的是,在管理面板中,我可以轻松地在文章中插入民意调查(或其他应用程序)。

1 个答案:

答案 0 :(得分:1)

您可以将compile TextField字符串作为模板。即:

from django.db import models
from django.template import Template, Context


class YourModel(models.Model):
    body = models.TextField()

    def render_body(self, context=None):
        template = Template(self.body)
        context = context or {}
        context['object'] = self
        return template.render(Context(context))

然后在实际模板中,您可以使用{{ your_model.render_body }}而不是{{ your_model.body }}