我为登录用户和注销用户显示相同的主页。但是变化是在导航栏中。登录后,将显示用户名。注销后将不会显示任何内容。如果我注销并单击“后退”按钮,则会看到显示后一页(即带有用户名的页面)。我对此进行了搜索,甚至发现了关于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
进行登录和注销操作
预先感谢!
答案 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("/")
现在,当用户单击“后退”按钮时,他们将返回注销页面,该页面将无限制地再次将其发送到主页,从而有效地防止了他们看到旧内容。