我正在制作一个自定义模板标记,并且我希望能够以任何类型的值传递它。用例是这样的:
{% include_with_args "path_to_template.html" simple_var an_object.foo.bar "A String" %}
在评估我的自定义模板代码时,我想要评估 simple_var
、an_object.foo.bar
和 "A String"
,与 Django 通常的方式相同。目前我有
these_args = [context[arg_name] for arg_name in self.arg_names]
但是,这只适用于变量名称 (simple_var
)。
如何让我的模板像 Django 一样评估这些字符串?也就是说,如果 .foo
是一个返回带有 "bar"
键的字典的函数,它应该按预期对其进行评估:an_object.foo()["栏”]
。
简单来说:我想将表达式计算为一个值。如何从自定义模板执行此操作?
最佳答案
其实很简单。而不是:
these_args = [context[arg_name] for arg_name in self.arg_names]
做:
these_args = [template.Variable(arg_name).resolve(context) for arg_name in self.arg_names]
当然,现在 arg_name
是一个用词不当,所以我改变了它,但只是这样写来阐明差异。
关于python - django:解析自定义模板中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787630/