0

在我看来,我有一个函数,它有一个 decorator login_required。当用户未通过身份验证时自动将我重定向到

babylon/?next=prot/ats2

但应该是:

babylon/prot/?next=prot/ats2

因为babylon/prot是我项目的根目录(它在我的 apache 配置中设置得如此)。

LOGIN_URL似乎不适用于这个问题。

我该如何解决这个问题?

提前致谢

4

2 回答 2

1

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

LOGIN_URL = 'login'

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

from django.core.urlresolvers import reverse_lazy 

LOGIN_URL = reverse_lazy('login')

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

于 2013-06-11T15:25:10.910 回答
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.

我不知道它不起作用。

于 2013-06-11T15:27:49.590 回答