html - Django - 用户登录时导航栏未正确显示
问题描述
我有一个包含以下路径的网站:
urlpatterns = [
path('admin/', admin.site.urls),
path('register/', user_views.register, name='register'),
path('profile/', user_views.profile, name='profile'),
path('login/', auth_views.LoginView.as_view(template_name='pages/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='pages/logout.html'), name='logout'),
path('mydata/', user_views.mydata, name="data"),
path('', include('mysite.urls')),
]
视图目录中的每个编码部分前面都有:
from django.contrib.auth.decorators import login_required
[...]
@login_required
def profile(request):
[...]
@login_required
def mydata(request):
[...]
我的问题是我希望用户只能看到 'profile' 和 'logout' ,而不是 'login' 或 'register',逻辑适用于每个路径,除了 /mydata 我不知道为什么.
至于我的 HTML 文件,base.html如下所示:
{% if user.is_authenticated %}
<a class="nav-item nav-link" href="/profile">Profile</a>
<a class="nav-item nav-link" href="/logout">Logout</a>
{% else %}
<a class="nav-item nav-link" href="/login">Login</a>
<a class="nav-item nav-link" href="/register">Register</a>
{% endif %}
我将它包含在mydata.html文件中,如下所示:
{% extends "pages/base.html" %}
{% block content %}
[...]
{% endblock content %}
我的问题是:有什么方法可以确保用户经过身份验证@/mydata?
我还是比较新的,所以欢迎你的意见。
解决方案
这是一个奇怪的情况,我想因为我事先使用了@login_required,所以没有注销的用户可以访问这个页面,因此我决定将我的 base.html 文件更改为:
{% if user.is_authenticated %}
<a class="nav-item nav-link" href="/profile">Profile</a>
<a class="nav-item nav-link" href="/logout">Logout</a>
{% elif request.path == data %}
<a class="nav-item nav-link" href="/profile">Profile</a>
<a class="nav-item nav-link" href="/logout">Logout</a>
{% else %}
<a class="nav-item nav-link" href="/login">Login</a>
<a class="nav-item nav-link" href="/register">Register</a>
{% endif %}
现在一切正常!希望它可以帮助别人
推荐阅读
- c - 如何获得内部结构的大小
- azure - 无法使用 CustomScriptForLinux 在 Azure VM 上安装 Node.js
- java - 访问 ElasticSearch 无痛脚本化指标聚合参数时出现 NullPointerExceptions
- .net - 在 Azure 应用服务中部署 .net 核心项目时出现空白页
- icons - 导入时 Ionic 4 自定义图标有黑色轮廓
- c++ - C++ 参考如何在幕后工作
- android - android.system.ErrnoException: ioctl failed: EBADF (Bad file descriptor) with file from data/data 文件夹
- android - 操作栏不可见?
- javascript - 在反应 DRY 中稍微适应了 HOC
- swift - 如何使用 Google idToken、accessToken 从我的托管服务器到我的应用程序?