4

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'

登录也发生了同样的事情

网址.py

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

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

视图.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'
4

1 回答 1

6

如果您在迁移后仍然想知道该问题的解决方案,这里是最简单的一个:

补充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

于 2020-04-10T20:56:35.413 回答