需要干草堆登录

时间:2013-02-04 20:11:12

标签: django-haystack

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

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

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

2 个答案:

答案 0 :(得分:3)

在root 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'),

答案 1 :(得分:2)

您无法使用login_required装饰器包装网址包含。

您应该做的是为该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'),
)