Пренасочване на вградения в 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 както по-горе ......


person Shiva Krishna Bavandla    schedule 01.03.2013    source източник


Отговори (3)


Поставете това във вашия logout.html

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

    setTimeout(redirect, 2000); //2000 is equivalent to 2 seconds
</script>
person catherine    schedule 01.03.2013

Можете да използвате функцията setTimeout() за пренасочване към друга страница след определен период от време.

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

Добавете това след {% block title %}Logout Page{% endblock %}.

person arulmr    schedule 01.03.2013
comment
:По принцип съм много начинаещ в django и уеб технологиите :) така че можете ли да ме уведомите къде да добавя горния фрагмент в logout.html? - person Shiva Krishna Bavandla; 01.03.2013
comment
@shivakrishna Редактира отговора ми. - person arulmr; 01.03.2013
comment
@BurhanKhalid Благодаря :) - person arulmr; 01.03.2013

като алтернатива на пренасочването на 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 е деактивиран. Недостатъкът е, че това е само стандартна заглавка от de facto, не е посочено в HTTP стандарта.

person Lie Ryan    schedule 01.03.2013