Реверс для «логин» не найден. 'login' не является допустимой функцией просмотра или именем шаблона - PullRequest
0 голосов
/ 18 января 2020

Выдает ошибку: обратное для входа в систему не найдено. 'login' не является допустимой функцией просмотра или именем шаблона.

Там написано NoReverseMatch.

Попытка замены URL-адреса для входа учетными записями: логин и не работает.

{% if user.is_authenticated %}
   <form id="logoutForm" action="/logout/" method="post" class="navbar-right">
     {% csrf_token %}
    <ul class="nav navbar-nav navbar-right">
        <li><span class="navbar-brand">Hello {{ user.username }}!</span></li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
  </form>

{% else %}

  <ul class="nav navbar-nav navbar-right">
    <li><a href="{% url 'login' %}">Log in</a></li>
  </ul>

{% endif %}

Файл URL-адреса приложения для моих учетных записей:

urlpatterns = [
    path('login/',
         LoginView.as_view
         (
             template_name='accounts/login.html',
             authentication_form=forms.BootstrapAuthenticationForm,
             extra_context=
             {
                 'title': 'Log in',
                 'year' : datetime.now().year,
             }
         ),
         name='login'),
    path('logout/', LogoutView.as_view(next_page='/'), name='logout'),
    path('signup/', views.signup, name='signup'),
    ]

Мой основной файл URL:

urlpatterns = [
    path('', views.home, name='home'),
    path('', include('accounts.urls')),
    path('contact/', views.contact, name='contact'),
    path('about/', views.about, name='about'),
    path('admin/', admin.site.urls),
]

Я не знаю, что с этим делать, много чего перепробовал.

1 Ответ

0 голосов
/ 18 января 2020

accounts / urls.py файл должен добавить auth_views :

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/',
         auth_views.LoginView.as_view
         (
             template_name='accounts/login.html',
             authentication_form=forms.BootstrapAuthenticationForm,
             extra_context=
             {
                 'title': 'Log in',
                 'year' : datetime.now().year,
             }
         ),
         name='login'),
    path('logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
    path('signup/', views.signup, name='signup'),
    ]

Пожалуйста, используйте следующий код для URL-адресов входа в систему. На самом деле вы используете один и тот же маршрут для двух разных URL:

urlpatterns = [
    path('', views.home, name='home'),
    path('accounts/', include('accounts.urls')),
    path('contact/', views.contact, name='contact'),
    path('about/', views.about, name='about'),
    path('admin/', admin.site.urls),
]
...