重定向时login_required不起作用

时间:2013-06-11 15:19:23

标签: python django

我的视图中有一个具有装饰器login_required的功能。未经过身份验证的用户会自动将我重定向到

babylon/?next=prot/ats2

但它应该是:

babylon/prot/?next=prot/ats2

因为babylon/prot是我项目的根(它的设置与我的apache配置中的相同)。

LOGIN_URL似乎不适用于此问题。

我该如何解决这个问题?

提前致谢

2 个答案:

答案 0 :(得分:1)

从Django 1.5开始,你可以LOGIN_URL作为url模式的名称。因此,如果您有一个名为“login”的网址模式,您应该能够:

LOGIN_URL = 'login'

如果您使用的是Django 1.4,则可以使用reverse_lazy

from django.core.urlresolvers import reverse_lazy 

LOGIN_URL = reverse_lazy('login')

如果这不起作用,您可能需要更新您的问题以包含您的apache配置的相关部分。

答案 1 :(得分:0)

来自Django文档:

from django.contrib.auth.decorators import login_required

def my_view(request):
# ...
    my_view = login_required(redirect_field_name='redirect_to')(my_view)

或者您也可以使用:

settings.py
LOGIN_URL  = '/where/'

在文档中我们可以读到:

LOGIN_URL
Default: '/accounts/login/'

The URL where requests are redirected for login, especially when using the login_required() decorator.

我不知道它不起作用。