1

如何让Django模板呈现模型TextField字段中包含的模板标签?模型文本字段中的模板标签

例如,具有在模型字段此内容:

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

它只是显示不处理网址标签字段内容,我该怎么处理呢?

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

回答

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/