首页 > 解决方案 > 在 Django 模板上使用字符串参数

问题描述

我在将字符串参数传递给href模板时遇到了一些麻烦。

我有以下网址模式

path('current_observations/<str:mongo_id>',
     views.specific_observation,
     name='specific_observation')

current_observations我有几个具有 mongo ID 作为属性的对象。我们的想法是将此 id 发送到新的 url。

我尝试执行以下操作但没有成功

<a href="{% url 'VM_OrchestratorApp:specific_observation' resource.id|stringformat:s %}">
      {{ resource.TITLE }}
</a>

返回错误Failed to lookup for key [s]

还尝试执行以下操作

<a href="{% url 'VM_OrchestratorApp:specific_observation' resource.id|stringformat:'s' %}">
      {{ resource.TITLE }}
</a>

但在这种情况下,这一论点根本没有得到承认。

注意:通过做

<a href="{% url 'VM_OrchestratorApp:specific_observation' 'hello' %}">
      {{ resource.TITLE }}
</a>

我被重定向到current_observations/hello预期的行为。

关于字符串格式可能出现什么问题的任何想法?

编辑:

根据@Ralf 的回答,我尝试执行以下操作。

<a href="{% url 'VM_OrchestratorApp:specific_observation' resource.id %}">
      {{ resource.TITLE }}
</a>

这将返回以下错误。

Reverse for 'specific_observation' with arguments '('Some_id',)' not found. 1 pattern(s) tried: ['current_observations/(?P<mongo_id>[^/]+)$']

specific_observation调用url时似乎添加了第二个空参数。

标签: htmlpython-3.xdjango

解决方案


您是否尝试过resource.id不使用模板过滤器stringformat

url模板过滤器文档显示了一个让过滤器处理转换为字符串的示例(代码示例{% url 'app-views-client' client.id %},位于该过滤器描述中的几段)。

代码如下所示:

<a href="{% url 'VM_OrchestratorApp:specific_observation' resource.id %}">
    {{ resource.TITLE }}
</a>

推荐阅读