模型文本字段中的模板标签

时间:2015-12-17 17:04:41

标签: django templates django-models django-templates django-views

如何让Django模板渲染模型TextField字段中包含的模板标签?

例如,将此内容放在模型字段中:

object.description = "We have all the links here: {% url 'list' %}"

它只显示字段内容而不处理 url 标记,我该如何处理?

(在被标记为重复之前,this question没有回复。)

1 个答案:

答案 0 :(得分:0)

您可以使用自定义模板标记执行此操作,我执行了以下操作。

# blog_tags.py
from django.template import Context, Template
from django import template

register = template.Library()


class RenderCustom(template.Node):

    @classmethod
    def handle_token(cls, parser, token):
        tokens = token.split_contents()

        field = tokens[1]

        return cls(parser.compile_filter(field))

    def __init__(self, field):
        self.field = field

    def render(self, context):
        render_field = self.field.resolve(context)

        render_template = Template(render_field)

        rendered = render_template.render(Context())

        return rendered


@register.tag
def render_this(parser, token):
    return RenderCustom.handle_token(parser, token)
模板上的

是这样的:

# view_post.html
{% load blog_tags %}
    <h1>{{ post.title }}</h1>
    {{ post.content }}
<hr>
    {% render_this post.title %}

它会返回这样的内容:

# The rendered page
Lol {% url 'admin:index' %}
The content
Lol /admin/