python - django:解析自定义模板中的变量

标签 python django interpreter django-templates

我正在制作一个自定义模板标记,并且我希望能够以任何类型的值传递它。用例是这样的:

{% include_with_args "path_to_template.html" simple_var an_object.foo.bar "A String" %}

在评估我的自定义模板代码时,我想要评估 simple_varan_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/

相关文章:

javascript - django 删除时没有 access-control-allow-origin header

python - 运行两个 python 进程

javascript - JavaScript 解释器是否将所有变量设置为未定义

python - 操作系统错误 : Initializing from file failed on csv in Pandas

python - 从列表中返回半唯一值

python pandas从时间序列中提取唯一日期

compiler-construction - 在线交互式控制台

python - Django 模型外键无法识别 'QueryString' BaseObject

python - 如何查找在 Django-admin 中存储为整数的自定义 ip 地址字段?

python - Django - 如何通过用户先前选择的选项填充表单中的 manytomany 字段