提取 Mustache 变量以用于 Django 模板标签
Extract Mustache variable for use in Django template tag
我正在为 Django 实现 Algolia 的搜索 API,并且我有一个特定的 Mustache 变量 {{ObjectID}}
对应于搜索结果的 ID。我只能使用 via {% verbatim %} {{ObjectID}} {% endverbatim %}
而不会与 Django 的模板语法冲突。
然而,我还需要这个变量来为 ID 构造一个 url,但问题是我无法轻松地将 Mustache 变量传递到可直接与 Django 模板一起使用的表单中。例如,简单地做
{% url "appName:method" {{ObjectID}} %}
与 Django 的模板语法冲突,但试图通过
ivnoke verbatim
{% url "appName:method" {%verbatim %} {{ObjectID}} {% endverbatim %} %}
也不起作用,因为不允许在模板标签中调用模板标签。
我也无法将 {{ObjectID}}
存储为方法的临时变量或离岸 url
到单独的方法,例如
function generate (objectID){
return "{% url 'appName:method' objectID %}"
}
//usage of method
<a href = "generate({% verbatim %}{{ObjectID}} {% endverbatim %})">link</a>
因为 Django 会立即处理 url
并抛出 NoReverseMatch
因为 objectID
还没有被 Algolia 定义。有没有办法提取 {{ObjectID}}
以便它可以通过管道返回到 Django 的 url
构造函数中?
注意:我的 Algolia 实现不直接与 Django 的数据库交互,而是它自己对单独存储的数据库进行索引。有关 algoliasearch-django
's Github
的更多信息
我建议您在视图中使用类似这样的东西并将值传递给模板:
reverse('appName:method', args=[1337]).replace('1337', '{{ObjectID}}')
如果你必须只在模板中做,并且你可以确定 {{ObjectID}}
部分总是在 URL 的末尾,你可以这样做:
{% url "appName:method" 1337 as my_url %}
<a href="{{ my_url|slice:":-5" }}{% verbatim %}{{ObjectID}}{% endverbatim %}/">...</a>
请注意,上面的模板代码采用尾部斜杠。
我正在为 Django 实现 Algolia 的搜索 API,并且我有一个特定的 Mustache 变量 {{ObjectID}}
对应于搜索结果的 ID。我只能使用 via {% verbatim %} {{ObjectID}} {% endverbatim %}
而不会与 Django 的模板语法冲突。
然而,我还需要这个变量来为 ID 构造一个 url,但问题是我无法轻松地将 Mustache 变量传递到可直接与 Django 模板一起使用的表单中。例如,简单地做
{% url "appName:method" {{ObjectID}} %}
与 Django 的模板语法冲突,但试图通过
ivnokeverbatim
{% url "appName:method" {%verbatim %} {{ObjectID}} {% endverbatim %} %}
也不起作用,因为不允许在模板标签中调用模板标签。
我也无法将 {{ObjectID}}
存储为方法的临时变量或离岸 url
到单独的方法,例如
function generate (objectID){
return "{% url 'appName:method' objectID %}"
}
//usage of method
<a href = "generate({% verbatim %}{{ObjectID}} {% endverbatim %})">link</a>
因为 Django 会立即处理 url
并抛出 NoReverseMatch
因为 objectID
还没有被 Algolia 定义。有没有办法提取 {{ObjectID}}
以便它可以通过管道返回到 Django 的 url
构造函数中?
注意:我的 Algolia 实现不直接与 Django 的数据库交互,而是它自己对单独存储的数据库进行索引。有关 algoliasearch-django
's Github
我建议您在视图中使用类似这样的东西并将值传递给模板:
reverse('appName:method', args=[1337]).replace('1337', '{{ObjectID}}')
如果你必须只在模板中做,并且你可以确定 {{ObjectID}}
部分总是在 URL 的末尾,你可以这样做:
{% url "appName:method" 1337 as my_url %}
<a href="{{ my_url|slice:":-5" }}{% verbatim %}{{ObjectID}}{% endverbatim %}/">...</a>
请注意,上面的模板代码采用尾部斜杠。