18

我想使用 Django 的注销功能,但不知道如何正确使用它。我一直在参考这个 Django 用户身份验证:https ://docs.djangoproject.com/en/dev/topics/auth/它读取

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.

对我来说令人困惑的部分是 # 重定向到成功页面。我如何将其重定向到另一个页面。我应该使用 HttpResponseRedirect 还是向注销(请求)添加其他参数。我不知道该怎么做..需要一些指导。

4

5 回答 5

20

Django 有一个快捷方法,称为redirect. 您可以使用它来重定向,如下所示:

from django.contrib.auth import logout
from django.shortcuts import redirect

def logout_view(request):
    logout(request)
    return redirect('home')

home您定义的 url 模式的名称在哪里,urls.py如下所示:

urlpatterns = patterns('',
    url(r'^$', 'blah.views.index', name='home'))
)

redirect调用中,您也可以使用路径,例如/重定向到站点根目录,但使用命名视图更简洁。

PS:@Hedde 发布的代码来自django.contrib.auth.views模块,logout方法。如果这是您想要使用的,您可以像这样导入它:

from django.contrib.auth.views import logout
于 2013-01-17T20:16:12.737 回答
18

您不必为此编写视图,只需执行以下操作:

(r'^accounts/logout/$', 'django.contrib.auth.views.logout',{'next_page': '/accounts/login'})

更多信息:https ://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

于 2014-02-19T11:48:06.423 回答
14

查看 logout 方法的来源,它应该可以让您清楚地了解发生了什么。您可以向 logout 方法添加额外的参数来处理重定向,但您也可以在方法之后附加自定义行为

def logout(request, next_page=None,
           template_name='registration/logged_out.html',
           redirect_field_name=REDIRECT_FIELD_NAME,
           current_app=None, extra_context=None):
    """
    Logs out the user and displays 'You are logged out' message.
    """
    auth_logout(request)
    redirect_to = request.REQUEST.get(redirect_field_name, '')
    if redirect_to:
        netloc = urlparse.urlparse(redirect_to)[1]
        # Security check -- don't allow redirection to a different host.
        if not (netloc and netloc != request.get_host()):
            return HttpResponseRedirect(redirect_to)
    #etc...
于 2012-06-28T08:54:08.137 回答
1
urlpatterns =[
path('accounts/logout/', views.LogoutView.as_view(template_name="post_list.html"), name='logout'),
]

在里面写一个模板名称对我有用。希望它可能有用。谢谢

于 2019-03-17T06:38:42.297 回答
0
def logout(request):
    # Log out the user.
    logout(request)
    # Return to homepage.
    return HttpResponseRedirect(reverse('registeration:index'))
于 2017-10-17T11:55:25.027 回答