Django - навигационная панель не отображается должным образом, когда пользователь вошел в систему - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть веб-сайт со следующими путями:

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):
[...]

Моя проблема в том, что я wi sh пользователь может видеть только «профиль» и «выход», а не «логин» или «регистрация» , лог c работает со всеми путями, кроме / mydata, и я не могу понять почему.

Что касается моего HTML файла, база . 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?

Я все еще относительно новичок, так что ваши отзывы приветствуются.

1 Ответ

0 голосов
/ 11 апреля 2020

Это такая странная ситуация, я подумал, так как я использовал @login_required заранее, никто из зарегистрированных пользователей не мог получить доступ к этой странице в любом случае, поэтому я решил изменить свою базу. 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 %}

Теперь все работает хорошо! надеюсь, это поможет кому-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...