在 if 比较字符串中呈现模板对象



我一直在尝试这样做,但没有得到任何结果

<ul>
{% for topic in topics %}
<li {% if request.get_full_path == "/topic/{{ topic.topic_slug }}/" %}class="is-active"{% endif %}>
<a href="{% url "TopicView" topic.topic_slug %}">{{ topic.topic_name }}</a>
</li>
{% endfor %}
</ul>

我猜错误来自字符串中呈现的 {{ topic.topic_slug }}。我希望它在渲染过程中是"/主题/技术/",但这似乎不起作用。

我不相信你可以在{% %}中使用{{ }},所以你需要以不同的方式做到这一点。有很多可能性。

尝试使用

{% if request.get_full_path == "/topic/"+topic.topic_slug+"/" %}

但是我会这样做的方法是简单地使用您的类来完成返回路径的工作。/topic/tech/看起来像人们通常从get_absolute_url类函数返回的内容:

class Topic:
...
def get_absolute_url(self):
return '/topic/{}/'.format(self.topic_slug)

然后在您的模板中,只需使用:

{% if request.get_full_path == topic.get_absolute_url %}

(请注意,如果您已经有absolute_url,只需使用另一个函数名称即可。get_my_topic_slug_url()(。

最新更新