我正在创建一个显示文章的应用程序。在我的模型中,我有一个TextField,它将包含文章的内容。
现在我希望能够在我的文章中呈现另一个应用程序。假设我有一个民意调查应用程序,我想在文章中间显示一个民意调查。我怎么能这样做?
我尝试在帖子中添加{% render_poll 42 %}
,但正如预期的那样,它只是在生成的页面中显示。
我应该创建某种标记(比如说[poll=42]
)并在显示渲染的html页面之前解析它吗? (我使用markdown库,也许我可以扩展它。)我怎么能这样做才能保持友好" django友好"办法 ?我想要的是,在管理面板中,我可以轻松地在文章中插入民意调查(或其他应用程序)。
答案 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 }}
。