5

私は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'}),
)

ビュー.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 を使用しているログアウト URLも用意します。これは、ログアウト URL をクリックしたときに正常に動作し、上記の html コードを正常に表示するbuilt-in logout viewテンプレートを提供することによります。logout.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 リフレッシュ ヘッダーを実行することもできます。

# 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 に答える