5

我正在使用 django 构建登录和注销页面,以下是我的代码

网址.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'}),
)

视图.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")

注销.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 %}

所以在上面的代码中,我将有一个登录网址,它将显示一个登录表单并在成功登录后重定向到另一个网址,这工作正常

此外,我将有一个我正在使用 django 的注销 url built-in logout view,通过为其提供一个模板,该模板logout.html也可以正常工作,并在我单击注销 url 时成功显示上述 html 代码

所以现在我想在显示注销页面后重定向到登录页面(一段时间后......)。我的意思是首先注销视图应该呈现logout.html代码,然后应该重定向到登录页面....

任何人都可以让我知道如何在渲染 logout.html 后重定向到登录 html 页面......

4

3 回答 3

11

您可以使用setTimeout()函数在指定的时间后重定向到另一个页面。

{% block extrahead %}{{ block.super }}
    <script type="text/javascript">
        setTimeout(function() {
            window.location.href = "/login/";
        }, 2000);
    </script>
{% endblock %}

之后添加这个{% block title %}Logout Page{% endblock %}

于 2013-03-01T12:30:54.770 回答
9

把它放在你的 logout.html 中

<script>
    function redirect(){
       window.location.href = "supply_url_here";
    }

    setTimeout(redirect, 2000); //2000 is equivalent to 2 seconds
</script>
于 2013-03-01T12:34:12.843 回答
4

作为 javascript 重定向的替代方案,您还可以执行 HTTP Refresh Header:

# 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标准中没有规定。

于 2013-03-01T12:44:37.213 回答