Django:login_redirect_url 不起作用

Luv*_*eet 2 python django

我已经编写了自己的登录和注销视图。

我正在使用LOGIN_REDIRECT_URL设置重定向页面。

我的登录视图相当简单:

def todologin(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            login(request, user)
            url = reverse('pilot:home')
            return HttpResponseRedirect(url)
    else:
        form = LoginForm()
    return render(request, 'login.html', {'form':form})

@login_required
def home(request):
Run Code Online (Sandbox Code Playgroud)

@login_required在我的主页上使用。

这是 的值LOGIN_REDIRECT_URL

LOGIN_REDIRECT_URL = '/login/'
# tried this one too, LOGIN_REDIRECT_URL = 'pilot:login'
Run Code Online (Sandbox Code Playgroud)

我的应用程序的 urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^signup/', views.signup),
    url(r'^home/', views.home, name='home'),
    url(r'^login/', views.todologin, name='login'),
    url(r'^logout/', views.todologout, name='logout'),
]
Run Code Online (Sandbox Code Playgroud)

尽管如此,它总是重定向到 /accounts/login/?next=/home/

为什么会这样?

anj*_*505 6

您应该覆盖LOGIN_URLsettings.py像下面。

# ....
LOGIN_URL = '/login/'
# ....
Run Code Online (Sandbox Code Playgroud)

LOGIN_REDIRECT_URL django 使用它在成功登录后重定向用户。

参考:https : //docs.djangoproject.com/en/2.0/ref/settings/#std : setting-LOGIN_URL