我使用Django和semantic UI
创建搜索框。除URL
参数外,一切正常。
$('.ui.search').search({
type : 'standard',
minCharacters : 2,
apiSettings : {
onResponse: function(parcelleResponse) {
//DO Something
return response;
},
url: "/myUrl/{query}"
}
});
我想使用网址模板标记系统来指定网址:
{% url 'searchParcelle' {query} %}
但是,由于Semantic UI返回的结果存储在变量 {query} 中,我遇到了模板错误:
Could not parse the remainder: '{query}' from '{query}'
你知道我怎么解决这个问题吗? 我可以保持这样,但由于我的Prod URL(虚拟主机)有点不同,我每次都要改变它。
答案 0 :(得分:2)
您的代码存在两个问题:
{query}
周围没有引号,因此Django不会将其视为字符串/myUrl/%7Bquery%7D/
此外,您的网址定义可能只允许使用字母数字字符,并且与参数{query}
不匹配。
执行此操作的正确方法是获取URL模式并将其转换为模板URL格式,但这需要深入了解Django URL解析的内部,并且可能不值得麻烦。
更实用的方法是使用占位符撤消URL,然后在JavaScript中替换它。
var url = "{% url 'searchParcelle' 'QUERYPLACEHOLDER' %}".replace(
'QUERYPLACEHOLDER', '{query}'
)
$('.ui.search').search({
type : 'standard',
minCharacters : 2,
apiSettings : {
onResponse: function(parcelleResponse) {
//DO Something
return response;
},
url: url
}
});
答案 1 :(得分:0)
更实用的方法是使用a来反转URL 占位符,然后在JavaScript中替换。
事实上,我完全按照您的建议行事,现在按预期工作!谢谢你的帮助Daniel Hepper。
_urlSearch = "{% url 'search' '--MySearchValue--' %}";
_urlDisplay = "{% url 'display' '--MySearchValue--' %}";
$('.ui.search').search({
...
url: _urlSearch.replace('--MySearchValue--', '{query}')
});