gpt4 book ai didi

Django 1.4 自定义模板标签返回 HTML

转载 作者:行者123 更新时间:2023-12-01 10:05:54 25 4
gpt4 key购买 nike

我设置了一个工作自定义模板标签,它被注册,我可以调用它,它实例化一个 template.Node 实例并调用它的 render() 方法。问题是当我返回一个简单的字符串时

def render(self, context):
return 'asd'

它工作正常,但是每当我尝试返回包含 html 的内容时它都会失败:
def render(self, context):
return mark_safe('<ul class="jqueryFileTree" style="display: none;"><li><ITEM</li></ul>')

它在不渲染任何东西的情况下默默地失败。有什么帮助吗?

编辑 :添加了 mark_safe。还是不行

编辑 :标签:
    import os
import urllib

from django import template
from django.utils.safestring import mark_safe

register = template.Library()

class DirTree(template.Node):
def __init__(self, start_dir):
self.start_dir = start_dir
def render(self, context):
# CODE THAT GENERATES A HTML NESTED LIST
return mark_safe('<ul class="jqueryFileTree"><li><ITEM</li></ul>')

@register.tag
def print_tree(parser, token):
try:
# split_contents() knows not to split quoted strings.
tag_name, start_dir = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError("%r tag requires a single argument" % token.contents.split()[0])
if not (start_dir[0] == start_dir[-1] and start_dir[0] in ('"', "'")):
raise template.TemplateSyntaxError("%r tag's argument should be in quotes" % tag_name)
return DirTree(start_dir[1:-1])



# TEMPLATE.HTML
# HTML 'N STUFF
<div id="file-tree">
{% print_tree "catflow_portal/static/repo/usr/test-user/catalogs/food/" %}
</div>
#END TAGS

最佳答案

我认为您的问题是您需要在模板中使用 ...|safe 来告诉 django 将此结果显示为 html,而不是强制将其显示为带有 "..." 的字符串

https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#safe

关于Django 1.4 自定义模板标签返回 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10785052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com