这是不可能的使用动态参数(如登录的用户的主键)在
LOGIN_REDIRECT_URL你的
settings.py。
在Django 1.11+中,您可以继承
LoginView和重写,
get_success_url以便它动态重定向。
from django.contrib.auth.views import LoginViewclass MyLoginView(): def get_success_url(self): url = self.get_redirect_url() return url or reverse('account_landing', kwargs={'pk': self.request.user.pk, 'name': self.request.user.username})注意,该
url =self.get_redirect_url()行是使用querystring处理重定向回上一页所必需的,例如
?next=/foo/bar
然后在URL配置中使用您的自定义登录视图。
url(r'^login/$', MyLoginView.as_view(), name='login'),
对于早期版本的Django,无法以相同的方式自定义基于函数的登录视图。
一种解决方法是创建一个重定向到您的登录页面的视图:
from django.contrib.auth.decorators import login_requiredfrom django.shortcuts import redirect@login_requireddef account_redirect(request): return redirect('account-landing', pk=request.user.pk, name=request.user.username)为此视图创建一个URL模式:
urlpatterns = [ url(r'^account/$', account_redirect, name='account-redirect'),]
然后将该视图用作
LOGIN_REDIRECT_URL:
LOGIN_REDIRECT_URL = 'account-redirect'



