Django上的Opensearch:将Firefox指向正确的图标和建议

时间:2014-04-29 17:40:44

标签: json django firefox opensearch

我试图在Django上添加opensearch,我既不能让Firefox获取正确的图标,也不能查询和显示建议。我也试过Chrome,我不认为我可以添加localhost作为搜索引擎。

这是我的opensearch.xml文件,Firefox正确读取,因为我可以将其添加到我的搜索引擎中。请注意,它目前显示localhost URL以进行调试。

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    <ShortName>My website</ShortName>
    <Description>My description</Description>
    <Image width="16" height="16" type="image/x-icon">http://localhost:8000{{ STATIC_URL }}ico/favicon.ico</Image>
    <Url type="text/html" method="get" template="http://localhost:8000/articles/?q={searchTerms}" />
    <Url type="application/x-suggestions+json" method="get" template="http://localhost:8000/api/v1/articles/?q={searchTerms}"/>
    <InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>

Favicon问题

当我在Firefox中将我的网站添加为搜索引擎时,以下是发出的请求:

  

[29 / Apr / 2014 18:18:19]&#34; GET /favicon.ico/static/ico/favicon.ico/ HTTP / 1.1&#34; 200 49266

     

[29 / Apr / 2014 18:18:21]&#34; GET /opensearch.xml HTTP / 1.1&#34; 200 335

     

[29 / Apr / 2014 18:18:21]&#34; GET /favicon.ico/static/ico/favicon.ico/ HTTP / 1.1&#34; 200 49267

如果图片设置为/favicon.ico/static/ico/favicon.ico/,Firefox会尝试提取/static/ico/favicon.ico/的原因是什么?我知道/static/ico/favicon.ico/是有效的,因为它是我们在网站上使用的那个,它运作良好(本地和现场)。

建议

opensearch接受的JSON格式是什么?我找到了RSS和ATOM格式,但没有找到JSON格式。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Favicon问题

问题是我的APPEND SLASH设置有效,我没有为favicon定义网址。对于某些的原因,Firefox甚至在向服务器请求任何内容之前都会获取到/favicon.ico/static/ico/favicon.ico。

如果您启用了APPEND SLASH,那么for favicon的解决方案是将以下内容添加到您的主url.py

url(r'^favicon\.ico/$', RedirectView.as_view(url=settings.STATIC_URL + 'ico/favicon.ico'), name='favicon'),

ico末尾的斜线非常非常重要。没有它,浏览器将被重定向到主页面。

JSON建议格式

链接到文档:http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions

["Search term entered by user", ["Suggestion 1", "Suggestion 2", ... ]]