Django 在模板标签中使用变量

Posted

技术标签:

【中文标题】Django 在模板标签中使用变量【英文标题】:Django use a variable within a template tag 【发布时间】:2015-10-23 16:46:49 【问题描述】:

我在我的 Django 模板中使用静态模板标签:

% load staticfiles %
<img src="% static "my_app/myexample.jpg" %" />

但是,我需要使用作为模型对象属性的文件名而不是 "my_app/myexample.jpg"(即 SampleModel.0.propertyValue ,我将其作为上下文传递给此模板。但是如何在其中包含 ... 静态模板标签?它会抛出错误。

有什么办法吗?

【问题讨论】:

如果您包含动态值,该资产应该是静态吗?您可能有充分的理由这样做,但这也可能暗示应用程序设计不佳 @Mischback :我有可以由模型对象的属性生成的文件名的图像。取而代之的是,我该如何解决这个问题.. 我个人会为此用例编写自己的模板标签:docs.djangoproject.com/en/1.8/howto/custom-template-tags 【参考方案1】:

您可以在静态模板标签中使用变量。请注意,您不需要

% static SampleModel.0.propertyValue % 

【讨论】:

如果路径是"images/ SampleModel.0.propertyValue .png" 那么呢? 然后你可以使用add过滤器:% static "images"|add:SampleModel.0.propertyValue|add:".png" %【参考方案2】:

您可以在 Django 标签中使用上下文中的任何变量(自定义标签可能需要一些调整才能使用它)。在你的情况下,这很好用:

% static SampleModel.0.propertyValue % 

这种用法也有效:

% with my_computed_var=SampleModel.0.propertyValue %
    % static my_computed_var % 
% endwith %

% static some_var|customFilter %

更多信息请参见the documentation about custom tags,它也与 Django 默认标签有关。

【讨论】:

以上是关于Django 在模板标签中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

Django 在模板标签中使用变量

我如何在Django模板标签中使用模板上下文变量的值? [重复]

在 Django url 模板标签中获取 javascript 变量的值

如何在 django 模板标签中传递 Javascript 变量

在 Django 模板标签中插入 JS 变量

Django 模板中 变量 过滤器 标签 的使用方法