Django标记用变量解析字符串的更好方法

时间:2012-02-23 18:04:01

标签: django google-app-engine

我有一个标签,其变量是一个带有嵌入变量的字符串。是否有更好的方法来评估它:

{% custom_extends  "this_{{is.a.test}}" %}

- 后端

string_with_variable = "this_{{is.a.test}}"
result = Template(string_with_variable).render(context)

这有效,但我不确定是否有任何较低级别的功能也是如此。

2 个答案:

答案 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.pyExtendsNode.get_parent()

答案 1 :(得分:0)

答案是否定的。目前,如果您想要解析/渲染字符串,您需要实例化Template并使用您的上下文调用渲染。

result = Template("this_{{is.a.test}}").render(context)