社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

重定向Django 2.2中的登录用户

Venkatesh Gotimukul • 6 年前 • 1986 次点击  

网址.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')

]