如果他进入主URL时登录到他的主页,我需要重定向用户。 urls.py
urlpatterns = [
url(r'^$', LoginView.as_view(template_name='landing.html'), name='landing')
]
我尝试创建自定义视图,而不是使用内置的Django登录。
新的urls.py
urlpatterns = [
url(r'^$', landing_validation, name='landing')
]
views.py
def landing_validation(request):
if request.user.is_authenticated:
return HttpResponseRedirect('/user/home')
else:
return login(request)
当用户登录并尝试进入登录页面并将其重定向到首页时,即当用户尝试http://127.0.0.1:8000并将其重定向到http://127.0.0.1:8000/user/home/时,此方法效果很好。但是当用户注销时,出现如下错误
login() missing 1 required positional argument: 'user'
我在settings.py中设置了以下网址,但从未使用过它们:
LOGIN_REDIRECT_URL = '/user/home'
LOGIN_URL = '/'
任何对此问题的见解都将受到赞赏。
注销工作正常,如下所示。
Urls.py
url(r'^logout/$',
logoutUser,
name='logout'
),
Views.py
def logoutUser(request):
logout(request)
return HttpResponseRedirect('/')
答案 0 :(得分:0)
login函数接收两个位置参数,您应该这样做:
login(request, user)
在此处查看登录文档:How to log a user in
因此,您需要从数据库中获取用户,以便在那里进行登录。
一个更简单的解决方案是,如果用户未通过身份验证,则重定向到登录URL。
答案 1 :(得分:0)
尝试一下:
urlpatterns = [
url(r'^$', LoginView.as_view(template_name='landing.html', redirect_authenticated_user=True), name='landing')
]