Django 4.0 показывает, что путь не найден, даже после правильной настройки всех урлов и представлений

Итак, мое приложение django выглядит следующим образом

-assaydash
--dashboard (app)
--members (app)
--djangobackend (django project directory)
--static
--manage.py

djangobackend/settings.py

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dashboard.apps.DashboardConfig',
    'members.apps.MembersConfig',
]

djangobackend/urls.py

urlpatterns = [
    path('admin/', admin.site.urls, name='admin'),
    path('', include('dashboard.urls')),
    path('members/', include('django.contrib.auth.urls')),
    path('members/', include('members.urls')),   
]

members/urls.py

urlpatterns = [
    path('login_user', views.login_user, name="login"),
    path('logout_user', views.logout_user, name='logout'),
]

members/views.py

def login_user(request):
    if request.method == "POST":
        ...
        else:
            messages.success(request, ("There Was An Error Logging In, Try Again..."))  
            return redirect('login')    


    else:
        return render(request, 'authenticate/login.html', {})

def logout_user(request):
    logout(request)
    messages.success(request, ("You Were Logged Out!"))
    return redirect('home')

index.html

 <a href="{% url 'login' %}" >
    <span class="d-sm-inline d-none">Sign In</span>
 </a>

На странице index, когда я нажимаю на тег a, он показывает мне страницу отладки с path not found. Хотя url существует и я включил его в мой основной urls.py и я добавил приложение в settings.py также. пожалуйста, помогите и дайте мне знать, что здесь не так. Обратите внимание, что url для имени login был обнаружен шаблоном, но путь не был найден. Также другие урлы на странице отладки взяты из моего приложения dashboard, которое работает нормально enter image description here

Потому что вы установили url путь django.contrib.auth.urls к members/ и django.contrib.auth.urls включили patterns в /members/login/ для name=login. Поскольку urlpatterns будет смотреть сверху вниз, ваш /members/login/ вызывается вместо /members/login_user и ищет corresponding страницу. Поэтому измените путь url на другой, а не members/ в

path('members/', include('django.contrib.auth.urls')),

и использовать members/ для include('members.urls').

Если вы установили

urlpatterns = [
    path('accounts/', include('django.contrib.auth.urls')),

]

В django.contrib.auth.urls входят urlpatterns как

accounts/login/ [name='login']
accounts/logout/ [name='logout']
accounts/password_change/ [name='password_change']
accounts/password_change/done/ [name='password_change_done']
accounts/password_reset/ [name='password_reset']
accounts/password_reset/done/ [name='password_reset_done']
accounts/reset/<uidb64>/<token>/ [name='password_reset_confirm']
accounts/reset/done/ [name='password_reset_complete']

Измените djangobackend/urls.py как

urlpatterns = [
    path('admin/', admin.site.urls, name='admin'),
    path('', include('dashboard.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('members/', include('members.urls')),   
]

Смотрите [Authentication Views[Django-doc]][1]

Также измените свой член urls.py как

urlpatterns = [
    path('login_user', views.login_user, name="login-user"),
    path('logout_user', views.logout_user, name='logout-user'),
]

Также в html

<a href="{% url 'login-user' %}" >
    <span class="d-sm-inline d-none">Sign In</span>
 </a>


  [1]: https://docs.djangoproject.com/en/4.0/topics/auth/default/
Вернуться на верх