简体   繁体   English

Django-如何在注销后重定向到索引页面?

[英]Django - how to redirect to index page upon logout?

I'm trying to implement a simple page redirect to the index page if user authentication fails. 如果用户身份验证失败,我将尝试实现一个简单的页面重定向到索引页面。

Imagine that I have two paths: 想象一下,我有两条道路:

www.xyz.com/app/
www.xyz.com/app/user

The first renders the index page, and the second is the authorized user landing page on successful login. 第一个呈现索引页面,第二个呈现成功登录后的授权用户登录页面。

In my views.py file, I have 在我的views.py文件中,

def index(request):
  return render(request, "app/index.html")

def userLogin(request):
  loginUser = authenticate(username = request.POST["username"], password = request.POST["password"])

  if loginUser is not None:
    if not loginUser.is_active:
      loginUser.is_active = True
      loginUser.save()

      login(request, loginUser)
      return HttpResponse(reverse(user))    
    else:
      return HttpResponse(simplejson.dumps({"login" : "failed"}))

def userLogout(request):
  logout(request)
  return HttpResponseRedirect(reverse(index))

and urls.py urls.py

urlpatterns = patterns("",
  url(r'^$', views.index, name = "index"),
  url(r'^user/$', views.user, name = "user"),
  url(r'^registerNewUser/$', views.registerNewUser),
  url(r'^userLogin/$', views.userLogin),
  url(r'^user/userLogout/$', views.userLogout),
)

The logout function is accessed via an Ajax POST request, and in the logs, I see 通过Ajax POST请求访问注销功能,在日志中,我看到

 [11/Jul/2013 09:08:00] "POST /app/user/userLogout/ HTTP/1.1" 302 0
 [11/Jul/2013 09:08:00] "GET /app/ HTTP/1.1" 200 5039

but the index page is not loading. 但索引页面未加载。 However, if I refresh the page, the index page loads, due a conditional call to request.user.is_authenticated() which triggers the same HttpResponseRedirect call and parameters on fail. 但是,如果刷新页面,则由于对request.user.is_authenticated()的条件调用而导致了索引页面的加载,该调用会在失败时触发相同的HttpResponseRedirect调用和参数。

If login fail i mean in else case return render(request, "app/index.html") instead
of return HttpResponse(simplejson.dumps({"login" : "failed"}))

**updated userLogin**

def userLogin(request):
    loginUser = authenticate(username = request.POST["username"],
    password = request.POST["password"])

if loginUser is not None:
if not loginUser.is_active:
  loginUser.is_active = True
  loginUser.save()

  login(request, loginUser)
  return HttpResponse(reverse(user))    
else:
  return render(request, "app/index.html")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM