django haystack - 使用通用 View 函数进行搜索

标签 django django-views django-urls django-haystack

我试图将此代码从 haystack 转换为 urls.py 调用通用 View 函数,但我得到'function'对象没有属性'status_code'。我认为这是因为它没有返回响应对象。

干草堆代码:

from django.conf.urls.defaults import *
from haystack.forms import ModelSearchForm, HighlightedSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView

sqs = SearchQuerySet().filter(author='john')

# With threading...
from haystack.views import SearchView, search_view_factory

urlpatterns = patterns('haystack.views',
    url(r'^$', search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=sqs,
        form_class=HighlightedSearchForm
    ), name='haystack_search'),
)

我的新 urls.py 只是调用views.py 中的search()。

在views.py中,我有

def search(request):
    sqs = SearchQuerySet().all()
    return search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=sqs,
        form_class=HighlightedSearchForm
        )

我这样做是因为我想根据用户输入和状态对 sqs 进行一些处理。

上面的search_view_factory不应该返回一个SearchView类,看起来它会自动调用create_response()来返回render_to_response。尝试手动调用 create_response(),但这也不起作用。

django-haystack code可以在这里找到。

谢谢。

最佳答案

search_view_factory 返回一个 View 函数而不是 HttpResponse,您需要正确调用它。

def search(request):
    sqs = SearchQuerySet().all()
    view = search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=sqs,
        form_class=HighlightedSearchForm
        )
    return view(request)

很抱歉在您之前的问题中产生了误导,我也已修复它。

关于django haystack - 使用通用 View 函数进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469340/

相关文章:

django - 获取 request.POST 中键值的最简单方法

django - 带有复选框的表单集

python - 是否可以在 Django Channels Consumer 中使用 ZeroMQ 套接字?

django - 赋值前引用的局部变量 'context'

python - 对于 Django 模板 {%url%} 标记,如何从通用 View 上下文中查找所有 URL 参数,而不仅仅是最后一个?

python - 基于类的 View : where to check for permissions?

python - 在 django 中获取空查询集的类名

python - 将上下文添加到每个 Django 管理页面

python - 对 'home' 进行反向操作,未找到参数 '()' 和关键字参数 '{}'。 0 个图案

python - 控制 django 中查看和模板输出的请求