我用另一个函数包装 django.contrib.auth.views.logout
来添加其他行为 . 这是我的新logout_page:
views.py
from django.contrib.auth import logout
def logout_page(request, *args, **kwargs):
from django.utils import timezone
user = request.user
profile = user.get_profile()
profile.last_logout = timezone.now()
profile.save()
logout(request, *args, **kwargs)
和
urls.py
(r'^logout/$', 'main.views.logout_page', {'next_page': '/'})
但是我收到以下错误:
logout() got an unexpected keyword argument 'next_page'
当logout包含** kwargs时,我不确定为什么'next_page'是一个意外的参数,据我所知,从django.contrib.auth注销应该包含这样的参数 . 从来源:
https://github.com/django/django/blob/master/django/contrib/auth/views.py
def logout(request, next_page=None,
template_name='registration/logged_out.html',
redirect_field_name=REDIRECT_FIELD_NAME,
current_app=None, extra_context=None):
...
我怎么解决这个问题?
4 回答
您应该从视图
from django.contrib.auth.views import logout
导入注销,而不是from django.contrib.auth import logout
.另外,对于此类行为,您可能需要使用注销信号 . 参考login logout signals
你说错了
logout
.应该
我遇到了和你一样的问题并使用了这个简单的解决方法:
views.py:
urls.py:
这已经成为Django V2的一个问题 . 您可以在视图中定义登录和注销功能,并在URL中调用它们 . 或者您可以按照Django文档中给出的示例进行操作
从django.contrib.auth导入视图作为auth_views
path('accounts / login /',auth_views.LoginView.as_view()),