Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Erro ao configurar o reset de senha

Implementei a questão de refazer a senha do usuário com o

from django.contrib.auth import views as auth_views

path('reset_password/', auth_views.PasswordResetView.as_view(), name="reset_password"),
path('reset_password_sent/', auth_views.PasswordResetDoneView.as_view(), name="password_reset_done"),
path('reset/<uidb64>/<token>', auth_views.PasswordResetConfirmView.as_view(), name="password_reset_confirm"),
path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(), name="password_reset_complete"),

Dá quase tudo certo, exceto que quando chega na página:

http://127.0.0.1:8000/usuarios/reset_password_complete/

Se eu clico no link Acessar... Dá um 404... Como eu faço para mudar a visualização?

8 respostas

Faaaala Raul, tudo tranquilo?

Para evitar esse erro 404, precisamos configurar uma variável de LOGIN_URL que será responsável por manter um caminho de login padrão para a nossa aplicação, pois, por predefinição o django configura esse caminho para accounts/login/. Vamos lá:

No final do arquivo settings.py do seu projeto adicione o seguinte trecho:

LOGIN_URL = "nome_da_sua_rota_de_login"

Então, caso sua rota de login tenha o name como "login", por exemplo:

path('login', views.login, name='login'),

Em LOGIN_URL você deverá colocar: LOGIN_URL = "login"

Após essa modificação verifique se obterá êxito ao clicar no botão de "acessar".

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Fiz uma configuração meio maluca e agr não consigo desfazer... Tenho um app chamado usuarios.

Ele é responsável por autenticar o login, renderizar a página de login, etc.

Ao configurar o reset de senha, para que esse botão acessar funcionasse eu acabei configurando 2 URLs para o mesmo app em settings.py

A primeira com:

path('accounts/', include('usuarios.urls')),

A segunda com:

path('usuarios/', include('usuarios.urls')),

Se eu tiro uma das duas configurações, buga tudo.... Não sei como proceder... Entretanto, com as duas, o botão acessar acaba funcionando.

"Se eu tiro uma das duas configurações, buga tudo.... "

  • Buga a parte do botão de acessar ou todo o seu projeto?
  • você tem algum path(rota) de login configurado? Algo como usuarios/login? Se sim, me mostre por favor como está o path dela.

Fico no seu aguardo, a gente vai se falando.

URLS.Py do settings (no meu caso é base.py)

urlpatterns = [
    path('accounts/', include('apps.usuarios.urls')),
    path('portal/',include('apps.alunos.urls')),
    path('financeiro',include('apps.financeiro.urls')),
    path('usuarios/',include('apps.usuarios.urls')),
    path('admin/', admin.site.urls),    

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

URLS.py do app de Usuarios:

from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
urlpatterns=[

    path('login/', views.index, name='index'),
    path('authentication/', views.autenticacao,name='autenticacao'),
    path('logout/',views.logout,name='logout'),
    path('configuration',views.configuracoes,name='configuracoes'),
    path('update/user-adm/',views.atualiza_adm,name='atualiza_adm'),


#Renderiza
    path('render_cadastro_perfil',views.render_cadastro_perfil,name='render_cadastro_perfil'),
    path('render_edita_perfil',views.render_edita_perfil,name="render_edita_perfil"),
#Cadastra
    path('cadastra_perfil',views.cadastra_perfil,name='cadastra_perfil'),
#Edita
    path('edita_perfil',views.edita_perfil,name="edita_perfil"),

#Recuperação de senha

    path('reset_password/', auth_views.PasswordResetView.as_view(), name="reset_password"),
    path('reset_password_sent/', auth_views.PasswordResetDoneView.as_view(), name="password_reset_done"),
    path('reset/<uidb64>/<token>', auth_views.PasswordResetConfirmView.as_view(), name="password_reset_confirm"),
    path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(), name="password_reset_complete"),
]

Ué, agora tirei e deu certo kkkkkk. Mas é cada uma!

Raul, a ideia era excluir a rota de accounts, ela não é necessária, nesse caso ela seria uma gambiarra, pois você estaria configurando duas rotas com nomes diferentes para a mesma finalidade: usuarios e accounts.

A configuração necessária é ir no arquivo settings.py e adicionar a propriedade LOGIN_URL. E no seu caso, como a rota de login tem o name de index, ficaria:

LOGIN_URL = "index"

E após isso, o botão de acessar estaria linkado com a url certa =)

No caso eu exclui a rota usuarios e ta rodando tranquilo agora. Gerei uma outra questão em um tópico. Consegui configurar tudo bonitinho, fiz o password reset funcionar localmente e mandar o email... Mas no Heroku, não pega. Fiz as configs que você sugeriu, mas aparentemente o gmail bloqueou mesmo eu colocando o "less secure app"

solução!

No fim, para funcionar tive configurar a senha em 2 etapas do ggogle para gerar uma senha de 16 dígitos, sem isso não tem como enviar o email.