【问题标题】:Django back button issue after logout注销后的Django后退按钮问题
【发布时间】:2023-03-29 08:49:01
【问题描述】:

我为已登录用户和已注销用户显示相同的主页。但变化是在导航栏中。登录后会显示用户名。注销后不会显示任何内容。如果我注销并单击后退按钮,我会看到后一页显示(即带有用户名的页面)。我搜索了一下,发现关于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 进行登录和注销操作 提前致谢!

【问题讨论】:

  • 您在这里没有提供足够的上下文。但我认为您的注销页面不会重定向到“注销后”或“再见”页面。推荐的模式是什么
  • 谢谢@e4c5 你能详细说明一下吗?你在问哪个上下文???。我说过,在注销后点击返回,用户可以看到登录的导航栏。你能提供一些关于“注销后”的信息吗??
  • 我不是在谈论 django 上下文。您没有提供足够的代码片段(如您的观点等)来得出明确的结论。
  • @e4c5 我更新了内容可以吗?

标签: python django django-views


【解决方案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("/")

现在,当用户点击后退按钮时,他们会返回注销页面,这会将他们无限期地再次发送到主页,从而有效地防止他们看到旧内容。

【讨论】:

  • 我认为我在文档中阅读了使用django.contrib.auth.views 时最好的方法 - 在settings.py 中设置LOGOUT_RIDIRECT_URL
  • 这当然是一种方法,但最好的方法取决于具体情况。另一种是将next参数传递给LogoutView
  • e4c5 是指西西里防御吗?
猜你喜欢
  • 1970-01-01
  • 2018-08-03
  • 2012-05-07
  • 1970-01-01
  • 2022-01-09
  • 2012-05-12
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多