Py学习  »  Django

重定向Django 2.2中的登录用户

Venkatesh Gotimukul • 6 年前 • 1970 次点击  

网址.py

urlpatterns = [
    url(r'^$', LoginView.as_view(template_name='landing.html'), name='landing')
]

我尝试创建自定义视图,而不是使用内置django登录。

新建url.py

urlpatterns = [
    url(r'^$', landing_validation, name='landing')
]

视图.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中设置了如下URL,但从未使用过它们:

LOGIN_REDIRECT_URL = '/user/home'

LOGIN_URL = '/'

注销工作正常,如下所示。

  url(r'^logout/$',
      logoutUser,
    name='logout'
  ),

视图.py

def logoutUser(request):
  logout(request)
  return HttpResponseRedirect('/')
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55936
文章 [ 2 ]  |  最新文章 6 年前
Raydel Miranda
Reply   •   1 楼
Raydel Miranda    7 年前

login函数接收两个位置参数,您应该:

login(request, user)

请参见此处的登录文档: How to log a user in

一个更简单的解决方案是,如果用户未通过身份验证,则重定向到登录URL。

Victor Fernandes
Reply   •   2 楼
Victor Fernandes    7 年前

试试这个:

urlpatterns = [ 
    url(r'^$', LoginView.as_view(template_name='landing.html', redirect_authenticated_user=True), name='landing')

]