我有一个 Django 模板,其中包含一个模板标记,该标记接受一个变量(shop.id)并根据商店是否在数据库模型中返回两个字符串之一,如下所示
{% is_shop_claimed shop.id %}
模板标签返回的两个可能的字符串是
return '<p>Taken</p>'
或者
return '<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>'
当代码运行时,如果返回第二个字符串,它会出现在模板中(在浏览器中查看页面源代码)就像
<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>
并在浏览器中显示为这样的链接
立即索取店铺
问题是Django 模板引擎没有将 href 中的 shop.id 评估为数字。
例如,商店 123 的链接应如下所示
<a href="/claim_shop/123/">Claim shop now</a>
我检查了 Django 文档中的过滤器以应用于模板标签或模板中的字符串,以便字符串不会被转义但没有运气。
我看过这个,但似乎应该有一种简单的方法在模板中对 {{shop.id}} 进行评估。
我还让模板标签返回一个 Bool 而不是两个字符串,像我喜欢的那样将演示文稿留在模板中,但是在这样的模板标签周围使用 if 语句
{% if is_shop_claimed shop.id %}
<p>Taken</p>
{% elif not is_shop_claimed shop.id %}
<a href="/claim_shop/{{shop.id}}/">Claim shop now</a>
{% endif %}
不起作用,因为我不能将模板标签放在 if 语句中。
有关如何将 {{shop.id}} 评估为数字的任何建议?任何帮助,将不胜感激。我正在学习 Django 和 Python,我在这个问题上花了几个小时。