2

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

现在我希望能够在我的文章中呈现另一个应用程序。假设我有一个投票应用程序,我想在文章中间显示一个投票。我怎样才能做到这一点 ?

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

我应该创建某种标签(比如 let say [poll=42])并在显示呈现的 html 页面之前对其进行解析吗?(我使用markdown库,也许我可以扩展它。)我怎样才能做到这一点以保持良好的“django 友好”方式?我希望在管理面板中,我可以轻松地在文章中插入投票(或其他应用程序)。

4

1 回答 1

1

您可以将 TextField 字符串编译为模板。IE。:

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 }}.

于 2012-07-12T09:08:48.533 回答