在Django中向logout视图添加代码的正确方法

Rob*_*ith 3 django login

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)
Run Code Online (Sandbox Code Playgroud)

urls.py

(r'^logout/$', 'main.views.logout_page', {'next_page': '/'})
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

logout() got an unexpected keyword argument 'next_page'
Run Code Online (Sandbox Code Playgroud)

当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):
...
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

Ism*_*awi 7

你说错了logout.

from django.contrib.auth import logout
Run Code Online (Sandbox Code Playgroud)

应该

from django.contrib.auth.views import logout
Run Code Online (Sandbox Code Playgroud)