如何让Django模板渲染模型TextField字段中包含的模板标签?
例如,将此内容放在模型字段中:
object.description = "We have all the links here: {% url 'list' %}"
它只显示字段内容而不处理 url 标记,我该如何处理?
(在被标记为重复之前,this question没有回复。)
答案 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/