[Python] Problema com View de Esqueci Minha Senha no Django

Discussão em 'Python' iniciado por Stack, Julho 22, 2025.

  1. Stack

    Stack Membro Participativo

    Contexto Projeto Django 5.1.6, Python 3.x

    Sistema de envio de e-mail funcionando em outras views (ex: bug report)

    View de "esqueci minha senha" carrega o HTML normalmente (GET e POST)

    Ao submeter o formulário, o POST retorna 200, mas:

    Não printa nada no terminal (nem print, nem logging)

    Não envia e-mail (mesmo código de envio funcionando em outra view)

    Não gera erro, não redireciona, apenas recarrega o template

    O que já foi testado Limpei cache, reiniciei servidor, troquei de navegador

    Coloquei prints e logging em todos os pontos da view

    Coloquei erro proposital (1/0) e nada acontece

    Testei envio de e-mail manual dentro da view (não envia)

    Confirmei que o template está correto e o campo email está sendo enviado

    O mesmo backend SMTP funciona em outra view

    O arquivo de urls está correto, o include está certo, o template carrega

    Código Relevante

    urls.py (do app, ja tenho include no do project)

    path('forgot-password/', forgot_password, name='forgot_password'),


    views.py

    def forgot_password(request):
    logger.warning('Passei na view! Método: %s', request.method) #Isso não carrega no terminal
    if request.method == 'POST':
    send_mail(
    subject="Teste de envio",
    message="Funcionou!",
    from_email=settings.DEFAULT_FROM_EMAIL,
    recipient_list=[os.getenv("EMAIL_HOST_USER")],
    fail_silently=False,
    )
    print('Entrei no if POST')
    email = request.POST.get('email')
    user = User.objects.filter(email=email).first()
    if user:
    print('Usuário encontrado:', user)
    token = default_token_generator.make_token(user)
    uid = urlsafe_base64_encode(force_bytes(user.pk))
    link = request.build_absolute_uri(
    reverse('reset_password', kwargs={
    'uidb64': uid, 'token': token})
    )
    print(token)
    print(uid)
    print(link)
    message = render_to_string('reset_email.html', {
    'user': user,
    'link': link
    })
    text_content = strip_tags(message)
    email_content = EmailMultiAlternatives(
    'Redefinição de Senha', text_content, settings.DEFAULT_FROM_EMAIL, [user.email])
    email_content.attach_alternative(message, 'text/html')
    email_content.send()
    messages.success(request,f"Link para redefinição de senha enviado para {email}")
    return redirect("forgot_password")
    else:
    messages.error(request, "Nenhum usuário com este e-mail.")
    return redirect("forgot_password")
    return render(request, 'forgot_password.html')


    template forgot_password.html

    <form action="{% url 'forgot_password' %}" method="post">
    {% csrf_token %}
    <div class="inputs-labels">
    <label for="email" class="label">Email <i class="fa-solid fa-envelope"></i></label>
    <input type="email" id="email" name="email" class="input" placeholder="Digite seu email" required />
    </div>
    <div class="btn-icon">
    <button type="submit" class="form-btn">Enviar Link de Recuperação</button>
    <i class="fa-solid fa-key"></i>
    </div>


    settings.py

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = os.getenv("EMAIL_HOST")
    EMAIL_PORT = os.getenv("EMAIL_PORT")
    EMAIL_USE_TLS = os.getenv("EMAIL_USE_TLS")
    EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD")
    DEFAULT_FROM_EMAIL = EMAIL_HOST_USER


    Prints do terminal

    GET e POST aparecem no log do Django, mas nada do que está dentro da view aparece Nenhum erro é mostrado

    O que pode ser? View está sendo chamada (template carrega), mas código dentro da função não executa

    Outras views funcionam normalmente

    Se alguém já passou por isso ou tem alguma ideia, agradeço!

    Continue reading...

Compartilhe esta Página