我想使用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.
Run Code Online (Sandbox Code Playgroud)
令我困惑的部分是#Redirect到成功页面.如何将其重定向到另一个页面.我应该使用HttpResponseRedirect还是向logout(request)添加其他参数.我不知道该怎么做..需要一些指导.
小智 18
您不必为此编写视图,您可以这样做:
(r'^accounts/logout/$', 'django.contrib.auth.views.logout',{'next_page': '/accounts/login'})
Run Code Online (Sandbox Code Playgroud)
更多信息:https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
Sto*_*ica 16
Django有一个名为的快捷方法redirect.您可以使用它来重定向,如下所示:
from django.contrib.auth import logout
from django.shortcuts import redirect
def logout_view(request):
logout(request)
return redirect('home')
Run Code Online (Sandbox Code Playgroud)
home您定义的url模式的名称在哪里,urls.py如下所示:
urlpatterns = patterns('',
url(r'^$', 'blah.views.index', name='home'))
)
Run Code Online (Sandbox Code Playgroud)
在redirect调用中,您也可以使用路径,例如/重定向到站点根目录,但使用命名视图更加清晰.
PS:@Hedde发布的代码来自django.contrib.auth.views模块,logout方法.如果这是您想要使用的,您可以像这样导入它:
from django.contrib.auth.views import logout
Run Code Online (Sandbox Code Playgroud)
Hed*_*ide 13
看一下注销方法的来源,它应该让你清楚地知道发生了什么.您可以向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...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29530 次 |
| 最近记录: |