首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块“search.views”没有属性“search”

模块“search.views”没有属性“search”
EN

Stack Overflow用户
提问于 2020-07-14 19:57:02
回答 1查看 168关注 0票数 0

我在用wagtail cms做搜索。我使用的是/search文件夹中的默认搜索。当我执行搜索时,我得到了以下抛出的异常。

/ AttributeError /模块'search.views‘处的搜索没有属性'search’

这是我的views.py

代码语言:javascript
复制
    from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.shortcuts import render

from wagtail.core.models import Page
from wagtail.search.models import Query


def search(request):
    search_query = request.GET.get('query', None)
    page = request.GET.get('page', 1)

    # Search
    if search_query:
        search_results = Page.objects.live().search(search_query)
        query = Query.get(search_query)

        # Record hit
        query.add_hit()
    else:
        search_results = Page.objects.none()

    # Pagination
    paginator = Paginator(search_results, 10)
    try:
        search_results = paginator.page(page)
    except PageNotAnInteger:
        search_results = paginator.page(1)
    except EmptyPage:
        search_results = paginator.page(paginator.num_pages)

    return render(request, 'search/search.html', {
        'search_query': search_query,
        'search_results': search_results,
    })

这是我的模板/search/search.html

代码语言:javascript
复制
{% extends "base.html" %}
{% load static wagtailcore_tags %}

{% block body_class %}template-searchresults{% endblock %}

{% block title %}Search{% endblock %}

{% block content %}
    <h1>Search</h1>

    <form action="{% url 'search' %}" method="get">
        <input type="text" name="query"{% if search_query %} value="{{ search_query }}"{% endif %}>
        <input type="submit" value="Search" class="button">
    </form>

    {% if search_results %}
        <ul>
            {% for result in search_results %}
                <li>
                    <h4><a href="{% pageurl result %}">{{ result }}</a></h4>
                    {% if result.search_description %}
                        {{ result.search_description }}
                    {% endif %}
                </li>
            {% endfor %}
        </ul>

        {% if search_results.has_previous %}
            <a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.previous_page_number }}">Previous</a>
        {% endif %}

        {% if search_results.has_next %}
            <a href="{% url 'search' %}?query={{ search_query|urlencode }}&amp;page={{ search_results.next_page_number }}">Next</a>
        {% endif %}
    {% elif search_query %}
        No results found
    {% endif %}
{% endblock %

}

当我执行搜索时,我得到了以下错误

/ AttributeError /模块'search.views‘处的搜索没有属性'search’

URLS.py

代码语言:javascript
复制
from search import views as search_views

urlpatterns = [
url(r'^django-admin/', admin.site.urls),

url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),

url(r'^search/$', search_views.search, name='search'),

url(r'sitemap.xml', sitemap),

url(r'^wagtail-transfer/', include(wagtailtransfer_urls)),

]

目录结构

EN

回答 1

Stack Overflow用户

发布于 2020-07-14 22:08:46

我看不到任何错误。我假设你安装了一个同名为'search‘的django包。因此,我认为更改你的应用程序名称可以解决你的问题。另一方面,您可以将应用程序urls与主urls分开,并使用相对导入。要做到这一点,你必须这样做

  1. search应用程序中创建一个名为urls.py的文件。

代码语言:javascript
复制
from django.urls import path
from . import views as search_view

urlpatterns = [
    path('', search_views.search, name='search')
]

  1. 在主urls.py

中包含urls.py(表单搜索)

代码语言:javascript
复制
#from search import views as search_views

urlpatterns = [
url(r'^django-admin/', admin.site.urls),

url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),

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

url(r'sitemap.xml', sitemap),

url(r'^wagtail-transfer/', include(wagtailtransfer_urls)),
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62894643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档