我正在使用django构建登录和注销页面,下面是我的代码
urls.py
from django.conf.urls.defaults import *
from django.conf import settings
from django.core.urlresolvers import reverse
urlpatterns = patterns('',
url(r'^$', 'learn_django.views.home_page'),
url(r'^login/$', 'learn_django.views.login'),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'template_name': 'logout.html'}),
)
views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib.auth import authenticate, login as main_login, logout as main_logout
def home_page(request):
return render_to_response("home_page.html")
def login(request):
.....
.....
return render_to_response("login.html")
logout.html
{% extends 'base.html' %}
{% block title %}Logout Page{% endblock %}
{% block body %}
<div>
<p style='color:#092E20;font-size:25px;font-weight:bold;padding-top:20px;padding-left:15px;'>
You have been successfully logged out......
</p>
<p>Redirecting to login page.....</p>
</div>
{% endblock %}
所以在上面的代码中,我将有一个登录URL,它将显示一个登录表单,并在成功登录后重定向到另一个URL,工作正常
此外,我将使用django built-in logout view
注销网址,为其提供模板logout.html
,该模板也正常工作并在我点击注销时成功显示上述HTML代码URL
所以现在我想在显示注销页面后重定向到登录页面(经过一段时间......)。我的意思是首先注销视图应该呈现logout.html
代码,接下来应该重定向到登录页面....
任何人都可以让我知道如何在渲染logout.html之后重定向到登录html页面......
答案 0 :(得分:11)
您可以使用setTimeout()
功能在指定的时间后重定向到另一个页面。
{% block extrahead %}{{ block.super }}
<script type="text/javascript">
setTimeout(function() {
window.location.href = "/login/";
}, 2000);
</script>
{% endblock %}
在{% block title %}Logout Page{% endblock %}
之后添加此内容。
答案 1 :(得分:9)
将其放入logout.html
<script>
function redirect(){
window.location.href = "supply_url_here";
}
setTimeout(redirect, 2000); //2000 is equivalent to 2 seconds
</script>
答案 2 :(得分:4)
作为javascript重定向的替代方法,您还可以执行HTTP刷新标题:
# in views.py
from django.contrib.auth import logout as main_logout
def logout(*args, **kwargs):
resp = main_logout(*args, **kwargs)
resp['Refresh'] = '3;URL=/account/login/' # redirects after 3 seconds to /account/login
return resp
根据需要修改您的urls.py.
这样做的好处是,即使禁用了javascript,它也能正常工作。缺点是它只是事实的标准头,它没有在HTTP标准中指定。