Olá, estou recebendo esse recebendo o erro NoReverseMatch at /login/ após ter terminado de codificar meu projeto. O DEBUG do django me dá a seguinte mensagem quando tento abrir a páginas inicial:
NoReverseMatch at /login/
Reverse for 'django.contrib.auth.views.login' not found. 'django.contrib.auth.views.login' is not a valid view function or pattern name.
Request Method: GET
Request URL: http://localhost:8000/login/?next=/
Django Version: 2.0.1
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'django.contrib.auth.views.login' not found. 'django.contrib.auth.views.login' is not a valid view function or pattern name.
Exception Location: C:\Users\huugo\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 632
Python Executable: C:\Users\huugo\AppData\Local\Programs\Python\Python36\python.exe
Python Version: 3.6.4
Python Path:
['C:\\C++\\Django\\connectedin',
'C:\\Users\\huugo\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip',
'C:\\Users\\huugo\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\huugo\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\huugo\\AppData\\Local\\Programs\\Python\\Python36',
'C:\\Users\\huugo\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
Server time: Fri, 26 Jan 2018 22:22:10 +0000
Pelo que eu compreendi, o django não está interpretando as funções login e logout_then_login como funções de view válidas. Só não sei o porquê kkk minha #connectedin.usuarios.urls# está assim:
from django.urls import re_path
from usuarios.views import RegistrarUsuarioView
from django.contrib.auth import views
urlpatterns = [
re_path('^registrar/$',RegistrarUsuarioView.as_view(), name="registrar"),
re_path('^login/$', views.login, {'template_name':'login.html'}, name='login'),
re_path('^logout/$', views.logout_then_login, {'login_url':'/login/'}, name='logout')
]
Observação: Estou usando python 3 com o Django 2.0. Porém, mesmo sendo uma versão diferente, se eu for no diretorio em que ele está instalado no meu computador, irei a mesma rota 'django.contrib.auth.views' onde está definida a função:
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm,
extra_context=None, redirect_authenticated_user=False):
warnings.warn(
'The login() view is superseded by the class-based LoginView().',
RemovedInDjango21Warning, stacklevel=2
)
return LoginView.as_view(
template_name=template_name,
redirect_field_name=redirect_field_name,
form_class=authentication_form,
extra_context=extra_context,
redirect_authenticated_user=redirect_authenticated_user,
)(request)
então não estou entendo pq ele não está reconhecendo a função. Como consertar isso?