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 url 模板标签中获取 javascript 变量的值