logout()获得了意外的关键字参数'next_page'

问题描述 投票:2回答:1

Django 2.2中是否没有用于注销和登录的next_page或template_name参数?从Django 1.11升级到Django 2.2时出现这些错误!

这是我的urls.py

from django.contrib.auth import logout

url(r'^logout/$',logout, {'next_page': '/'},name='logout'),

来自settings.py的logout_url是

LOGOUT_URL = '/'

我一直收到此错误:

TypeError at /portal/logout/
logout() got an unexpected keyword argument 'next_page'
Request Method: GET
Request URL:    http://127.0.0.1:8000/
Django Version: 2.2
Exception Type: TypeError
Exception Value:    
logout() got an unexpected keyword argument 'next_page'

登录也发生了同样的事情

urls.py

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

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

views.py

def landing_validation(request):
  login_response = login(request, template_name='landing.html')

  return login_response

TypeError at /
login() got an unexpected keyword argument 'template_name'
Request Method: GET
Request URL:    http://127.0.0.1:8000/
Django Version: 2.2
Exception Type: TypeError
Exception Value:    
login() got an unexpected keyword argument 'template_name'
python-3.7 django-1.11 django-2.2
1个回答
0
投票

如果您仍然想在迁移后解决该问题,以下是最简单的一种:

settings.py中添加:

LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'home'

[home指的是您的首页路线name或只是

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'  # Or maybe another URL you want to set.

然后在urls.py中将路线更改为这样:

url(r'^logout$', LogoutView.as_view(),  name='logout'),

[LogoutView来的是导入的from django.contrib.auth.views import LogoutView

© www.soinside.com 2019 - 2024. All rights reserved.