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

Estilizando reset de senha

O Django fornece as rotas e views para os resets de senha. Mas como eu posso estilizá-lo e deixar com o visual que eu desejp? Como eu capturo os names para resetar a senha? Entre outras coisas..

3 respostas
solução!

Faaala Raul, como vai?

Para personalizar as views, precisamos criar um arquivo html com o visual desejado e passarmos para as rotas o atributo template_name. Por exemplo:

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

Quanto ao name no formulário para a alteração de senha, são eles: new_password1 e new_password2. E para o formulário de cadastro de e-mail o name é email. São definidos por padrão.

Como as outras visualizações são apenas mensagens de confirmação, não precisamos nos preocupar com o name.

Deixo abaixo códigos html de exemplos das visualizações que foram personalizados tendo como base o projeto Alura Receita:

password_reset.html:

{% extends 'base.html' %}
{% load static %}
{% block content %}
<!-- Preloader -->
<div id="preloader">
    <i class="circle-preloader"></i>
    <img src="{% static 'img/core-img/pizza.png' %}" alt="">
</div>

{% include 'partials/_busca.html' %}

{% include 'partials/_menu.html' %}

<!-- ##### Contact Form Area Start ##### -->
<div class="contact-area section-padding-0-80">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <div class="section-heading">
                    <h2>Esqueceu sua senha?</h2>
                    <p> Digite seu endereço de e-mail cadastrado e enviaremos
                    as intruções para que você possa cadastrar uma nova senha. </p>
                </div>
            </div>
        </div>
        {% include 'partials/_alertas.html' %}
        <div class="row">
            <div class="col-12">
                <div class="contact-form-area">
                    <form method="POST">
                    {% csrf_token %}
                        <div class="row">
                            <div class="col-12 col-lg-12">
                                <label for="email"><b>Email</b></label>
                                <input type="text" id="email" class="form-control" name="email" placeholder="Entre com o email cadastrado" required>
                                <div class="col-12 text-center">
                                    <button class="btn btn-success" type="submit">Enviar</button>
                                </div>

                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

{% include 'partials/_footer.html' %}
{% endblock %}

password_reset_sent.html:

{% extends 'base.html' %}
{% load static %}
{% block content %}
<!-- Preloader -->
<div id="preloader">
    <i class="circle-preloader"></i>
    <img src="{% static 'img/core-img/pizza.png' %}" alt="">
</div>

{% include 'partials/_busca.html' %}

{% include 'partials/_menu.html' %}

<!-- ##### Contact Form Area Start ##### -->
<div class="contact-area section-padding-0-80">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <div class="section-heading">
                    <h5>E-mail de recuperação enviado</h5>
                    <p> Te enviamos um email com instruções para configurar sua senha. Se uma conta existe com o email fornecido, você receberá a mensagem em breve. </p>
                    <p> Se você não recebeu um email, por favor certifique-se que você forneceu o endereço que você está cadastrado, e verifique sua pasta de spam. </p>
                </div>
            </div>
        </div>
</div>

{% include 'partials/_footer.html' %}
{% endblock %}

password_reset_form.html:

{% extends 'base.html' %}
{% load static %}
{% block content %}
<!-- Preloader -->
<div id="preloader">
    <i class="circle-preloader"></i>
    <img src="{% static 'img/core-img/pizza.png' %}" alt="">
</div>

{% include 'partials/_busca.html' %}

{% include 'partials/_menu.html' %}

<!-- ##### Contact Form Area Start ##### -->
<div class="contact-area section-padding-0-80">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <div class="section-heading">
                    <h5>Digite a nova senha</h5>
                    <p>Por favor, informe sua nova senha duas vezes para que possamos verificar se você a digitou corretamente.</p>
                </div>
            </div>
        </div>
        {% include 'partials/_alertas.html' %}
        <div class="row">
            <div class="col-12">
                <div class="contact-form-area">
                    <form method="POST">
                        {% csrf_token %}
                        <div class="row">
                            <div class="col-12 col-lg-12">
                                {{ form.new_password1.errors }}
                                <label for="password"><b>Senha</b></label>
                                <input type="password" class="form-control" name="new_password1" placeholder="Digite sua senha" required>
                            </div>
                            <div class="col-12 col-lg-12">
                                {{ form.new_password2.errors }}
                                <label for="password2" class="mt-2"><b>Confirmação de senha</b></label>
                                <input type="password" class="form-control" name="new_password2" placeholder="Digite sua senha mais uma vez" required>
                            </div>
                            <div class="col-12 text-center">
                                <button class="btn btn-success" type="submit">Alterar minha senha</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

{% include 'partials/_footer.html' %}
{% endblock %}

password_reset_done.html:

{% extends 'base.html' %}
{% load static %}
{% block content %}
<!-- Preloader -->
<div id="preloader">
    <i class="circle-preloader"></i>
    <img src="{% static 'img/core-img/pizza.png' %}" alt="">
</div>

{% include 'partials/_busca.html' %}

{% include 'partials/_menu.html' %}

<!-- ##### Contact Form Area Start ##### -->
<div class="contact-area section-padding-0-80">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <div class="section-heading">
                    <h5>Redefinição de senha completa</h5>
                    <p>Sua senha foi definida. Você pode prosseguir e se autenticar agora.</p>
                    <div class="col-12 text-center">
                        <button class="btn btn-success" type="submit" onclick="location.href='/usuarios/login'">Acessar sua conta</button>
                    </div>
                </div>
            </div>
        </div>
</div>

{% include 'partials/_footer.html' %}
{% endblock %}

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

Abraços e bons estudos!

Vou tentar, obrigado.