2013-03-01 99 views
3

我使用Django建立一個登錄和註銷頁面,下面是我的代碼重定向內置註銷視圖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這是工作細

此外,我將有其中一個註銷URL我使用django built-in logout view,通過提供一個模板logout.html這也是工作正常,並顯示上述html代碼,當我點擊註銷url

所以現在我想重定向到登錄頁面後顯示註銷頁面(經過一段時間....)。我的意思是首先註銷視圖應該呈現logout.html代碼,然後應該重定向到登錄頁面....

任何人都可以讓我知道如何重定向到登錄html頁面後渲染logout.html如上.... ..

回答

5

將這個在您的logout.html

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

    setTimeout(redirect, 2000); //2000 is equivalent to 2 seconds 
</script> 
7

您可以使用setTimeout()函數在指定的時間後重定向到另一個頁面。

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

{% block title %}Logout Page{% endblock %}後面加上這個。

+0

:基本上我是非常非常新手django和網絡技術:)所以你可以讓我知道在logout.html中添加上面的代碼片段? – 2013-03-01 12:36:55

+0

@shivakrishna編輯我的答案。 – arulmr 2013-03-01 12:40:01

+3

這真的應該是被接受的答案。 – 2013-03-01 12:53:57

2

,以替代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標準中沒有規定。