【问题标题】:Template tags in model text fields模型文本字段中的模板标签
【发布时间】:2016-03-24 06:11:37
【问题描述】:
如何让 Django 模板呈现模型 TextField 字段中包含的模板标签?
例如,在模型字段中包含此内容:
object.description = "We have all the links here: {% url 'list' %}"
不处理url标签,只显示字段内容,如何处理?
(在被标记为重复之前,this question 不会回答它。)
【问题讨论】:
标签:
django
templates
django-models
django-templates
django-views
【解决方案1】:
你可以使用自定义模板标签来做,我做了以下。
# 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/