注销后Django后退按钮问题

时间:2018-08-25 05:09:26

标签: python django django-views

我为登录用户和注销用户显示相同的主页。但是变化是在导航栏中。登录后,将显示用户名。注销后将不会显示任何内容。如果我注销并单击“后退”按钮,则会看到显示后一页(即带有用户名的页面)。我对此进行了搜索,甚至发现了关于it的几个问题。

但是这里使用装饰器来防止注销的用户回来。因此,该页面将被阻止再次加载。但是在这里,当我为两个用户显示相同的页面时,如何实现?如何防止导航栏在注销并单击“后退”按钮时显示用户名。

我的导航栏代码::

{% if request.user.is_authenticated %}
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ request.user.username }}</a>
                    <ul class="dropdown-menu" role="menu">
                        <li><a href="{% url 'profile' request.user.username %}">Profile</a></li>
                        <li><a href="{% url 'logout' %}">Logout</a></li>
                        {% else %} {% ifequal request.path '/accounts/login/' %}
                        <li><a href="{% url 'signup' %}">Sign Up</a></li>
                    {% else %}
                        <li><a href="{% url 'login' %}">Login</a></li>
                    {% endifequal %}
                    </ul>
                </li>
            {% endif %}

更新:

我的主页视图是

class HomeView(TemplateView):
       template_name = "home/home.html" # same template for login and logout

urls.py是

urlpatterns = [
      url(r'^$', HomeView.as_view(), name="home"),
]

我正在使用django.contrib.auth.urls进行登录和注销操作 预先感谢!

1 个答案:

答案 0 :(得分:1)

这是应该使用django contrib.auth.logout的方式(来自manual):

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.

这就是我在评论中提到的内容。当某人注销时,您需要重定向到另一个页面,该页面可以是您选择的任何页面,甚至包括用户所在的上一页

def logout_view(request):
    logout(request)
    return HttpResponseRedirect("/")

现在,当用户单击“后退”按钮时,他们将返回注销页面,该页面将无限制地再次将其发送到主页,从而有效地防止了他们看到旧内容。