我设置了一个实用的自定义模板标签, 它已经注册, 我可以调用它, 我可以调用它, 它会即时一个模板。 node 例和调用它的 make () 方法。 问题是当我返回一个简单的字符串时, 比如
def render(self, context):
return asd
但每当我试图返回含有 html 内容的东西时, 它就失败了:
def render(self, context):
return mark_safe( <ul class="jqueryFileTree" style="display: none;"><li><ITEM</li></ul> )
默默无闻地失败了,没有做任何事情,有什么帮助吗?
< 加固 > EDIT 强 > : 加标记_ 安全。 仍然不起作用
<强度 > EDIT 强度 > :标签 :
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