在我看来,我有一个函数,它有一个 decorator login_required
。当用户未通过身份验证时自动将我重定向到
babylon/?next=prot/ats2
但应该是:
babylon/prot/?next=prot/ats2
因为babylon/prot
是我项目的根目录(它在我的 apache 配置中设置得如此)。
LOGIN_URL
似乎不适用于这个问题。
我该如何解决这个问题?
提前致谢
从 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 配置的相关部分。
来自 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.
我不知道它不起作用。