【问题标题】:Django CMS search engine, few questionsDjango CMS 搜索引擎,几个问题
【发布时间】:2014-09-12 10:31:57
【问题描述】:

很难找到这方面的好文档。我正在尝试为使用 CMS 2.4 版构建的一个非常小的 Django CMS 站点构建一个简单的搜索引擎。我发现最好的方法是使用 Haystack + django-cms-search,然后它告诉我该包已被弃用并使用 aldryn-search 代替,文档缺乏大量时间。

据我所知,我需要创建一个 search_indexes.py ,但这会去哪里?我以为这是特定于应用程序的?如果我只是用它来索引 CMS 中的 Page 模型,我该如何整合它?

【问题讨论】:

    标签: django-cms


    【解决方案1】:

    对于 django-cms-search 将是您的解决方案,一旦您切换到 >= 3.x,那么 aldryn-search 就是您的解决方案。

    原因是aldryn-search 基本上是django-cms-search 的fork/refactor,目标是haystack 2.x 和cms 3.x

    我正在考虑为 aldryn-search 添加向后兼容性以在 cms 2.4 上工作,但为了让您启动并运行,您可以执行以下操作。

    安装django-cms-search 并将haystackcms_search 添加到您的INSTALLED_APPS 设置中。

    这应该允许您已经开始索引页面,如果没有,请发布回溯:)。

    一旦您能够索引页面,现在由您决定是否要使用 apphook 或固定 url 通过 cms 管理搜索页面。

    通常在使用搜索时,需要调整一些内容并添加特定于搜索的模板,为此我强烈建议在您的项目中创建一个search 应用程序,添加一个models.py,然后将此应用程序添加到您的@987654332 @。

    现在回到搜索页面,如果你选择使用 apphook,那么在你的搜索应用中,创建一个 cms_app.py 文件并添加以下内容:

    from cms_search.cms_app import HaystackSearchApphook
    apphook_pool.register(HaystackSearchApphook)
    

    这会将来自 django-cms-search 的打包 apphook 注册到 cms(这在默认情况下会发生,但现在不会发生)。

    否则,如果您选择不由 cms 管理的固定 url,您只需在搜索应用中添加 urls.py 即可:

    from django.conf.urls import *
    
    from haystack.views import search_view_factory
    
    urlpatterns = patterns('search.views',
        url('^$', search_view_factory(), name='haystack-search'),
    )
    

    然后在您的项目的urls.py 中,您可以将search.urls 包含在您想要的任何名称下,如下所示:

    url(r'^search/', include('search.urls')),
    

    【讨论】: