Страница не найдена, когда я выхожу из системы, есть идеи, почему выход из системы не работает?

Работаю над социальным приложением с django и нажатие на log out больше не работает по какой-то причине я получаю: Страница не найдена (404)

Не найдено ни одного профиля, соответствующего запросу Метод запроса: GET URL запроса: http://127.0.0.1:8000/logout. Поднято: network.views.<class 'network.views.ProfileDetailView'>

Используя URLconf, определенный в project4.urls, Django попробовал эти шаблоны URL, в таком порядке: admin/ [name='all-profiles-view'] [name='profile-view']. Текущий путь, logout, совпал с последним.

Также есть ли простой способ сделать имя пользователя кликабельным на любой странице, направленной на его профиль (ProfileDetailView)? URLs:

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from . import views
from .views import (
    posts_of_following_profiles,
    like_unlike_post,
    invites_received_view,
    invite_profiles_list_view,
    send_invitation,
    remove_friends,
    accept_invitation,
    reject_invitation,

    ProfileDetailView,
    PostDeleteView,
    PostUpdateView,
    ProfileListView,
)

urlpatterns = [
    path("", ProfileListView.as_view(), name="all-profiles-view"),
    path("<slug>", ProfileDetailView.as_view(), name="profile-view"),
    path("posts/", views.post_comment_create_view, name="posts"),
    path("posts-follow/", posts_of_following_profiles, name="posts-follow"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register"),
    path("liked/", like_unlike_post, name="like-post-view"),
    path("<pk>/delete", PostDeleteView.as_view(), name="post-delete"),
    path("<pk>/update", PostUpdateView.as_view(), name="post-update"),
    path("invites/", invites_received_view, name="invites-view"),
    path("send-invite/", send_invitation, name="send-invite"),
    path("remove-friend/", remove_friends, name="remove-friend"),
    path("invites/accept/", accept_invitation, name="accept-invite"),
    path("invites/reject/", reject_invitation, name="reject-invite"),
    path("to-invite/", invite_profiles_list_view, name='invite-profiles-view')

]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Просмотров:

Разметка:

Посмотрите на свою urlpatterns. У вас есть profile-view перед logout.

path("<slug>", ProfileDetailView.as_view(), name="profile-view")
.
.
.
path("logout", views.logout_view, name="logout")

И когда ваш урл logout совпадает с slug и ваш ProfileDetailView вызывается, поскольку ваш ProfileDetailView оценивается перед logout_view. Поэтому измените порядок ваших урлов, потому что каждый value после http://127.0.0.1:8000/ соответствует этому шаблону и будет вызван. Поэтому измените порядок ваших urls.py и проверьте.

Так что, если посмотреть на urls.py, это не повлияет на размещение этого ProfileDetailView внизу urls.

Для второй части, нажав на username вызовите ProfileDetailView измените в вашем html как

    <li class="nav-item">
              <a class="nav-link" href="{% url 'profile-view' user.username %}"><strong>{{ user.username }}</strong>. 
              </a>
    </li>
Вернуться на верх