我有一个标签,其变量是一个带有嵌入变量的字符串。是否有更好的方法来评估它:
{% custom_extends "this_{{is.a.test}}" %}
- 后端
string_with_variable = "this_{{is.a.test}}"
result = Template(string_with_variable).render(context)
这有效,但我不确定是否有任何较低级别的功能也是如此。
答案 0 :(得分:1)
我想我今天早上有点密集。问题是some_custom
接受一个嵌入了变量引用的参数吗?或者你想让some_custom
的参数在传递之前得到解决(这是一个更普遍的情况)?
如果是后一种情况,请查看Expr templatetag。有了它,你可以做类似的事情:
{% expr "this_"+is.a.test as some_string %}
{% some_custom some_string param %}
评论更新:
由于这是{% extends %}
,正如您正确指出的那样,它必须是文件中的第一行,只需在视图中设置一个变量,例如: my_custom_template = "this_"+is.a.test+".html"
并将其与上下文一起传递。然后在你的模板中,你可以说{% custom_extends my_custom_template %}
并且你很高兴。
当然,这假设您的custom_extends
标记像普通extends
标记那样执行可变分辨率,但这很容易添加到您的代码中。有关核心代码的用法,请参阅django/template/loader_tags.py
,ExtendsNode.get_parent()
。
答案 1 :(得分:0)
答案是否定的。目前,如果您想要解析/渲染字符串,您需要实例化Template
并使用您的上下文调用渲染。
result = Template("this_{{is.a.test}}").render(context)