【问题标题】: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/ 
    

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多