[英]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.