首页 > 解决方案 > Django模板:如何传递格式化字符串以包含标签

问题描述

我是 Django 和 Django 模板的新手,我知道 Django 模板与 Rails 相比有点限制。

所以我在电子邮件中包含了一个模板,例如:

{% include "./partials/_info_row.html" with value=f'{request_count} requests' %}

但这会引发错误:TemplateSyntaxError: Could not parse the remainder: ''{request_count} requests'' from 'f'{request_count} requests''

有没有办法传递这样的格式化字符串来包含标签?

标签: djangodjango-templates

解决方案


引发异常是因为您不能在 Django 模板中使用 f 字符串 - 模板语言实际上不是 Python。根据文档,使用时不需要显式传递上下文变量include

加载模板并使用当前上下文呈现它。

如果您需要传递一个组合值(上下文加上“请求”字符串之类的其他内容),您可以使用简单的标签

标签.py

@register.simple_tag(takes_context=True)
def your_custom_tag(context, format_string):
    request_count = context['request_count']
    return f'{request_count} requests'

模板

{% with r_count=your_custom_tag %}
{% include "./partials/_info_row.html" with value=r_count %}

推荐阅读