1

我正在使用 Haystack 默认 URLConf 来设置视图。像这样:

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

我如何将它包装在 login_required 装饰器中,因为我只想登录用户访问搜索。谢谢你。

4

2 回答 2

4

在根urls.py添加

from django.contrib.auth.decorators import login_required
from haystack.views import basic_search 

并改变:

url(r'search/*', include(haystack.urls)), 

到以下行:

url(r'search/$', login_required(basic_search), name='basic_search'),
于 2013-02-04T20:55:39.647 回答
2

您不能使用login_required装饰器包装 URL 包含。

您应该做的是为该 URL 路径添加一些中间件或显式添加您的搜索视图。默认urls.py配置只定义一个 URL:

from django.conf.urls.defaults import *
from haystack.views import SearchView


urlpatterns = patterns('haystack.views',
    url(r'^$', SearchView(), name='haystack_search'),
)

因此,在您自己的 URL 配置中,您可以导入SearchView(如果您想要配置,这可能是一个好主意)然后包装该视图。在你自己的urls.py

urlpatterns = patterns('haystack.views',
    url(r'^$', login_required(SearchView()), name='haystack_search'),
)
于 2013-02-04T21:01:29.990 回答