使用本指南作为参考,我为 Django 模板编写了一个集合标记解析器,该模板将适用于 TWIG 的集合语法,即:
{% set someVar %} variableAssignment {% endset %}
我只将 Django 用于它的模板系统,直到此时我已经能够通过正确的导入来正确显示我的模板。这是我目前的代码:
from django.template import Context, Template, Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist, resolve_variable
from django.template.loader import *
from django.conf import settings
settings.configure(TEMPLATE_DIRS="/my/templates")
register = Library()
class SetValueNode(Node):
def __init__(self, variable, nodelist):
self.variable = variable
self.nodelist = nodelist
def render(self, context):
context[self.variable] = self.nodelist.render(context)
return ""
@register.tag(name="set")
def set_tag(parser, token):
print "set_tag called: parser",parser," token",token
nodelist = parser.parse(("endset",))
parser.delete_first_token()
return SetValueNode(arg, nodelist)
def sendServiceEmail(username, first, last, service, service_tuple):
TEMPLATES_DIR = "/my/templates/"
emailStr = "myemail.html.twig"
print "Opening file :"+TEMPLATES_DIR+emailStr
t = Template(fp.read())
fp.close()
c = Context({
/*Add context from parameters*/
})
msg = t.render(c)
print msg
但我得到的错误是:
django.template.base.TemplateSyntaxError: 'set_tag' is not a valid tag library: Template library set_tag not found, tried django.templatetags.set_tag
在做了一些研究并考虑了一段时间后,django 正在寻找的库似乎是“标准”库。我认为我需要告诉某人(django 设置、模板或 .render)我希望他们使用“库”并检查库以查看模板标签是否已注册。有没有办法在不创建 django 应用程序的情况下将此信息传递给 Django?