Django模板:会话开始时删除按钮
Posted
技术标签:
【中文标题】Django模板:会话开始时删除按钮【英文标题】:Django Template: remove the buttons when session starts 【发布时间】:2013-08-21 19:28:24 【问题描述】:我正在尝试在 Django 中进行登录身份验证。我在上方导航栏中制作了登录和注册按钮。
现在我需要实现的是,当我登录到应用程序时,会发生重定向,那时会检查会话,如果会话已经开始,那么登录和注册按钮就会消失,用户 ABC 按钮就会出现在它的位置。
我正在尝试用我的代码来做这件事。
% if request.session.loggedin %
<li><a data-toggle="modal" href="#"><b>Hello Chitrank</b></a></li>
% else %
<li><a data-toggle="modal" href="#signup"><b>Sign Up</b></a></li>
<li><a data-toggle="modal" href="#signin"><b>Sign In</b></a></li>
% endif %
请建议我该怎么做,我是否使用了错误的方式来检查会话,或者如果有其他方式可以做到这一点,那么欢迎使用解决方案。
【问题讨论】:
【参考方案1】:% if user.is_authenticated %
是您正在寻找的。 https://docs.djangoproject.com/en/dev/ref/templates/api/#django-contrib-auth-context-processors-auth
也允许你这样做
<span>Welcome back user.username !</span>
【讨论】:
它仍然无法正常工作是因为我在 index.html 页面中使用了% include './django_component_include/header.html' %
谢谢 knightZeRo,sn-p 为我工作,休息一下,我自定义登录视图。【参考方案2】:
对此还有另一种解决方案,基于登录用户(要求您在身份验证系统中使用 django 构建)。
您可以在模板中访问request.user.is_authenticated
并区分其状态(True 是登录)。
【讨论】:
我在我的模板中使用% if request.user.is_authenticated %
来检查会话下的登录用户,但是当我登录到这个时,我仍然得到登录和注册按钮。【参考方案3】:
您可以在相应的视图中检查您是否已登录并将变量current_user
传递给您的模板,然后检查:
% if current_user %
Hello, current_user.name
% else %
# ... Display signin and signup buttons #
% endif %
【讨论】:
正如你所说,我已经更新了我的views.py文件,因为我的views.py是existing_user = User.objects.authenticate(**form.cleaned_data)
,我还引用了一个变量siteuser=existing_user
并将响应返回为return render(request,'index.html','siteuser':siteuser)
,但对登录后我的模板。以上是关于Django模板:会话开始时删除按钮的主要内容,如果未能解决你的问题,请参考以下文章