diff --git a/db.sqlite3 b/db.sqlite3
index be10f5a..b50042d 100644
Binary files a/db.sqlite3 and b/db.sqlite3 differ
diff --git a/filme/forms.py b/filme/forms.py
index 36d24dd..a26e17d 100644
--- a/filme/forms.py
+++ b/filme/forms.py
@@ -15,7 +15,7 @@ class CustomLoginForm(AuthenticationForm):
     def clean_username(self):
         username = self.cleaned_data.get('username')
         # Exemplo de validação simples de formato de email:
-        if not username.endswith('@'):
+        if '@' not in username:
             raise forms.ValidationError(
                 'Este campo deve ser um email válido.')
         return username
diff --git a/filme/templates/editarperfil.html b/filme/templates/editarperfil.html
index b0e6230..c9f8096 100644
--- a/filme/templates/editarperfil.html
+++ b/filme/templates/editarperfil.html
@@ -11,7 +11,69 @@
 
 {% block content %}
 <div class="content">
-  <h2>Edição do Perfil</h2>
+  <header class="header">
+    <div class="content-form">
+      <div class="title-form">
+        Edição de Perfil <p>{{ user.username }}</p>
+      </div>
+
+      <form method="post" class="form-editarperfil">
+        {% csrf_token %}
+
+        {% if 'editarperfil' in request.path %}
+          <div class="form-group">
+            <input type="text" name="{{ form.first_name.name }}" value="{{ user.first_name }}" placeholder="Primeiro Nome">
+          </div>
+          <div class="form-group">
+            <input type="text" name="{{ form.last_name.name }}" value="{{ user.last_name }}" placeholder="Sobrenome">
+          </div>
+          <div class="form-group">
+            <input type="text" name="{{ form.email.name }}" value="{{ user.email }}" placeholder="Email">
+          </div>
+
+        {% else %}
+        <div class="form-group">
+          {% if form.old_password.errors %}
+            <input type="password" class="is-invalid" name="{{ form.old_password.name }}" value="{{ user.old_password }}" placeholder="Senha antiga" required>
+            <div class="invalid-feedback">
+              {% for erro in form.old_password.errors %}
+                {{ erro }}
+              {% endfor %}
+            </div>
+          {% else %}
+            <input type="password" name="{{ form.old_password.name }}" value="{{ user.old_password }}" placeholder="Senha antiga" required>
+          {% endif %}
+        </div>
+        <div class="form-group">
+          <input type="password" name="{{ form.new_password1.name }}" value="{{ user.new_password1 }}" placeholder="Nova senha" required>
+          <small>{{ form.new_password1.help_text }}</small>
+        </div>
+        <div class="form-group">
+          {% if form.new_password2.errors %}
+              <input type="password" class="is-invalid" name="{{ form.new_password2.name }}" value="{{ user.new_password2 }}" placeholder="Confirmação da nova senha" required>
+              <div class="invalid-feedback">
+                {% for erro in form.new_password2.errors %}
+                  {{ erro }}
+                {% endfor %}
+              </div>
+          {% else %}
+            <input type="password" name="{{ form.new_password2.name }}" value="{{ user.new_password2 }}" placeholder="Confirmação da nova senha" required>
+          {% endif %}
+        </div>
+        {% endif %}
+
+        {% if 'editarperfil' in request.path %}
+          <small><a href="{% url 'filme:alterarsenha' %}">Quer mudar sua senha?</a></small>
+        {% endif %}
+        <div class="form-group">
+          <button type="submit" name="button">
+              Finalizar Edição
+          </button>
+        </div>
+      </form>
+
+    </div>
+  </header>
 
 </div>
 {% endblock %}
diff --git a/filme/urls.py b/filme/urls.py
index 7ca2578..bb0abe4 100644
--- a/filme/urls.py
+++ b/filme/urls.py
@@ -1,4 +1,4 @@
-from django.urls import path, include
+from django.urls import path, reverse_lazy
 from .views import Homepage, HomeFilmes, DetalhesFilme, PesquisaFilme, EditarPerfil, CriarConta, CustomLoginView
 from django.contrib.auth import views as auth_view
 
@@ -15,6 +15,8 @@
         template_name='login.html'), name='login'),
     path('logout/', auth_view.LogoutView.as_view(
         template_name='logout.html'), name='logout'),
-    path('editarperfil/', EditarPerfil.as_view(), name='editarperfil'),
+    path('editarperfil/<int:pk>', EditarPerfil.as_view(), name='editarperfil'),
+    path('alterarsenha/',
+         auth_view.PasswordChangeView.as_view(template_name='editarperfil.html', success_url=reverse_lazy('filme:homefilmes')), name='alterarsenha'),
     path('criarconta/', CriarConta.as_view(), name='criarconta'),
 ]
diff --git a/filme/views.py b/filme/views.py
index 100ab1c..656ce32 100644
--- a/filme/views.py
+++ b/filme/views.py
@@ -1,6 +1,6 @@
 from django.shortcuts import render, redirect, reverse
 from .models import Filme, Usuario
-from django.views.generic import TemplateView, ListView, DetailView, FormView
+from django.views.generic import TemplateView, ListView, DetailView, FormView, UpdateView
 from django.contrib.auth.mixins import LoginRequiredMixin
 from django.contrib.auth.views import LoginView
 from .forms import CustomLoginForm, CriarContaForm, FormHomepage
@@ -76,8 +76,15 @@ def get_queryset(self):
             return None
 
 
-class EditarPerfil(LoginRequiredMixin, TemplateView):
+class EditarPerfil(LoginRequiredMixin, UpdateView):
     template_name = 'editarperfil.html'
+    model = Usuario
+    # Irá criar um form com os fields definidos na lista
+    fields = ['first_name', 'last_name', 'email']
+
+    # Assim que editar será redirecionado para homefilmes
+    def get_success_url(self):
+        return reverse('filme:homefilmes')
 
 
 class CriarConta(FormView):
diff --git a/static/css/style_criarconta.css b/static/css/style_criarconta.css
index 84d18eb..00d6ac6 100644
--- a/static/css/style_criarconta.css
+++ b/static/css/style_criarconta.css
@@ -27,7 +27,7 @@
 
 .content-form {
 	width: 30rem;
-	height: 40rem;
+	height: auto;
 	background-color: rgb(0, 0, 0, 0.5);
 	display: flex;
 	flex-direction: column;
@@ -91,7 +91,6 @@
 }
 
 
-
 .is-invalid {
 	border: 1px solid rgb(255, 0, 0) !important;
 }
diff --git a/static/css/style_editarperfil.css b/static/css/style_editarperfil.css
index 837af4f..21822e3 100644
--- a/static/css/style_editarperfil.css
+++ b/static/css/style_editarperfil.css
@@ -1,4 +1,103 @@
-.content{
-  	padding-top: 4.68rem;
-    min-height: 100vh;
+@import url("https://fonts.googleapis.com/css2?family=Montserrat&family=Roboto:wght@500&display=swap");
+
+.header {
+	min-height: 100vh;
+	position: relative; /* Adicione uma posição relativa para que possamos posicionar o pseudo-elemento */
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
+
+.header::before {
+	content: "";
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	background-image: url("../images/background_netflix.jpg");
+	background-repeat: no-repeat;
+	background-blend-mode: overlay;
+	background-size: cover; /* Ajuste para cobrir todo o cabeçalho */
+	background-color: rgb(0, 0, 0, 0.7);
+	opacity: 0.7; /* Opacidade para a imagem de fundo */
+	z-index: -1; /* Coloque o pseudo-elemento atrás do conteúdo */
+}
+
+.content-form {
+	width: 30rem;
+	height: auto;
+	background-color: rgb(0, 0, 0, 0.5);
+	display: flex;
+	flex-direction: column;
+}
+
+.form-editarperfil {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	padding: 2rem 4rem;
+	gap: 1rem;
+}
+
+.title-form {
+	font-family: "Montserrat", sans-serif;
+	color: rgb(255, 255, 255);
+	font: 2rem bold;
+	padding-left: 4.5rem;
+	padding-top: 2rem;
+}
+
+.form-editarperfil input {
+	height: 3rem;
+	padding-left: 0.8rem;
+	border-radius: 0.3rem;
+	outline: none;
+	border: 1px rgb(204, 204, 204);
+	background-color: #313235;
+	color: hsl(0, 0%, 100%);
+}
+
+.form-editarperfil button {
+	height: 3rem;
+	border-radius: 0.3rem;
+	outline: none;
+  margin: auto;
+	width: 90%;
+	background-color: rgb(255, 0, 0);
+	border: transparent;
+	color: hsl(0, 0%, 100%);
+	text-align: center;
+	font-weight: bold;
+	transition: background-color -3s ease;
+}
+
+.form-editarperfil button:hover {
+	background-color: rgb(189, 8, 8);
+	cursor: pointer;
+}
+
+.form-editarperfil small {
+  text-align: center;
+}
+
+.form-editarperfil ul {
+  list-style-type: none; /* Retira o simbolo da lista */
+}
+
+.form-group {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+}
+
+.is-invalid {
+	border: 1px solid rgb(255, 0, 0) !important;
+}
+
+.invalid-feedback {
+	outline: none;
+	font-size: 0.8rem;
+	color: rgb(255, 0, 0);
 }
diff --git a/static/css/style_login.css b/static/css/style_login.css
index 191e1bf..b696409 100644
--- a/static/css/style_login.css
+++ b/static/css/style_login.css
@@ -27,7 +27,7 @@
 
 .content-form {
 	width: 30rem;
-	height: 35rem;
+	height: auto;
 	background-color: rgb(0, 0, 0, 0.5);
 	display: flex;
 	flex-direction: column;
@@ -95,6 +95,7 @@
 .inscrever p {
 	text-decoration: underline;
 	color: rgb(197, 82, 66);
+	padding-bottom: 2rem;
 }
 
 .is-invalid {
diff --git a/templates/navbar.html b/templates/navbar.html
index 8c696b6..49b8f84 100644
--- a/templates/navbar.html
+++ b/templates/navbar.html
@@ -24,7 +24,7 @@
       {% endif %}
       {% if user.is_authenticated %}
         <div class="nav-btn">
-            <a href="{% url 'filme:editarperfil' %}">Editar Perfil</a>
+            <a href="{% url 'filme:editarperfil' user.pk %}">Editar Perfil</a>
         </div>
       {% endif %}
     </div>