Я относительно новичок в мире Джанго.Наш клиент хочет добавить функцию поиска на свой сайт, поэтому я интегрирую Haystack и Aldryn Search, как описано здесь:
https://github.com/aldryn/aldryn-search
Я также прошел здесь:https://django -haystack.readthedocs.io / en / v2.6.0 / tutorial.html
Расположение исключения: env / lib / python2.7 / site-packages / haystack/backends/simple_backend.py в поиске, строка 79
Вот несколько полезных информационных фрагментов:
urls.py -
(r'^search/', include('haystack.urls')),
templates / search /search.html -
{% extends 'base.html' %}
{% block content %}
<div class="primary-content">
<div class="container constrained">
<form method="get" class="paragraph" action=".">
{{ form.as_table }}
<div class="text-right">
<button type="submit" class="button">
Search
</button>
</div>
{% if query %}
<h3>Results</h3>
{% for result in page.object_list %}
<div class="post-preview paragraph">
<h3>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a>
</h3>
</div>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if page.has_previous or page.has_next %}
<div>
{% if page.has_previous %}<a href="?q={{ query }}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
{% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</form>
</div>
</div>
{% endblock %}
settings.py -
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}
HAYSTACK_ROUTERS = ['aldryn_search.router.LanguageRouter', ]
ALDRYN_SEARCH_REGISTER_APPHOOK = True
ALDRYN_SEARCH_PAGINATION = 20
ALDRYN_SEARCH_CMS_PAGE = True
Кроме того, оба значения 'haystack' и 'aldryn_search' находятся в INSTALLED_APPS.
Когда я запускаю update_index- удалить это, кажется, работает по большей части:
Indexing 5 locations
Indexing 2 People
Indexing 16 articles
Похоже, я все сделал правильно в соответствии с документацией.Но я не должен быть.У нас есть только один язык на сайте, что делает документацию немного трудной для понимания, потому что я не уверен, есть ли у меня дополнительные вещи, которые нужны только для мультиязычности.
Трассировка стека:
['/build/healthdirect',
'/build/env/lib/python27.zip',
'/build/env/lib/python2.7',
'/build/env/lib/python2.7/plat-darwin',
'/build/env/lib/python2.7/plat-mac',
'/build/env/lib/python2.7/plat-mac/lib-scriptpackages',
'/build/env/lib/python2.7/lib-tk',
'/build/env/lib/python2.7/lib-old',
'/build/env/lib/python2.7/lib-dynload',
'/ System / Library / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 / plat-darwin ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac ',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages ',' / build / env / lib/python2.7/site-packages']