(haystack + woosh)' rebuild_index'在错误的位置寻找模板?

时间:2016-04-22 16:05:31

标签: django-haystack whoosh

我用嗖嗖的搜索引擎实现了haystack。当我跑'重建_指数'我的终端出现以下错误。

   id   |     list1       | code|   list2  | total
--------|-----------------|-----|----------|---
2434166 |      768        | 124 |     2    | 30
2434166 |      735        | 124 |     21   | 30
2434166 |      746        | 124 |     6    | 30
2434166 |      769        | 124 |     1    | 30

我的浏览器出现此错误。

 File "/home/dilts/installingDJANGO/ENV/lib/python3.5/site-packages/django/template/loader.py", line 74, in select_template
    raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: search/indexes/submit_app/incident_text.txt

我的通用文件结构如下所示......

reduce() of empty sequence with no initial value
incidents = SearchQuerySet().autocomplete(content_auto=request.POST.get(title, ''))
return clone.filter(six.moves.reduce(operator.__and__, query_bits)) 

从我在线阅读的内容来看,我认为我的结构是正确的,但从错误来看,我不再那么肯定了。我觉得可能会对共享模型产生一些困惑,但我不知道。

settings.py

project
|--------submit_app
|--------search_app (uses a submit_app model called Incident)
|--------templates (where I put search/indexes/search_app/incident_text.txt)

views.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
WHOOSH_INDEX = os.path.join(BASE_DIR,'whoosh/')

HAYSTACK_CONNECTIONS = {
    'default':{
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': WHOOSH_INDEX,
    },
}

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2 个答案:

答案 0 :(得分:0)

当你包含('haystack.urls')时,默认情况下它会看起来像search / search.html。你有一个search.html文件吗?

/templates/search/search.html

views.py

return render(request, 'search/search.html',
        {
        'form': form, 
        'title': title,
        'incidents' : incidents,
        }

答案 1 :(得分:0)

我对rebuild_index有同样的问题。看来Haystack在模型的app文件夹中寻找txt模板。根据您的情况,应将索引放在

  

templates / search / indexes / submit_app / incident_text.txt

submit_app不是search_app