在 Django URL 模板标签内使用语义 UI 的查询结果
Posted
技术标签:
【中文标题】在 Django URL 模板标签内使用语义 UI 的查询结果【英文标题】:Use query result from semantic UI inside Django URL Template tag 【发布时间】:2018-11-17 08:09:21 【问题描述】:我正在使用 Django 和 semantic UI
创建一个搜索框。除了URL
参数外,一切正常。
$('.ui.search').search(
type : 'standard',
minCharacters : 2,
apiSettings :
onResponse: function(parcelleResponse)
//DO Something
return response;
,
url: "/myUrl/query"
);
我想使用 URL 模板标签系统来指定 URL:
% url 'searchParcelle' query %
但由于语义 UI 返回的结果存储在变量 query 中,我遇到了模板错误:
Could not parse the remainder: 'query' from 'query'
你知道我该如何解决吗? 我可以保持这样,但由于我的 Prod URL(虚拟主机)有点不同,我每次都必须更改它。
【问题讨论】:
Use Django template tags in jQuery/javascript?的可能重复 其实我想要的有点不一样。我想在 Django 模板标签中包含一个 Javascript 变量。但问题是这个变量有括号。 如果query
是一个JavaScript var,那么你不能做你期望的事情,因为那个var“存在”只在渲染时间,我的意思是,当html(服务器发送)是由浏览器解析和运行。注意模板标签是在服务器端执行的。
【参考方案1】:
你的代码有两个问题:
query
周围没有引号,因此 Django 不会将其视为字符串
URL 中的大括号将被转义,从而产生如下 URL:/myUrl/%7Bquery%7D/
此外,您的 URL 定义可能只允许使用字母数字字符,并且与参数 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
);
【讨论】:
【参考方案2】:更实用的方法是将 URL 反转为 占位符,然后在 JavaScript 中替换它。
事实上,我完全按照您的建议做了,现在按预期工作!感谢您的帮助 Daniel Hepper。
_urlSearch = "% url 'search' '--MySearchValue--' %";
_urlDisplay = "% url 'display' '--MySearchValue--' %";
$('.ui.search').search(
...
url: _urlSearch.replace('--MySearchValue--', 'query')
);
【讨论】:
以上是关于在 Django URL 模板标签内使用语义 UI 的查询结果的主要内容,如果未能解决你的问题,请参考以下文章