Hello,
I would like to remove the labels in my sign-in form and just have
placeholders in the text fields. Its working for my sing up form but for
some reason not for my sign-in form. Below is my forms.py, my views.py, and
my models.py. I think its because I'm using Django's auth view for the
sign-in but have my own view for the sign up. I'm new to django and not
sure where the sign-in view is or how to change the form to use my
UserLoginForm. Thanks for your help
#forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm
class UserCreateForm(UserCreationForm):
class Meta:
fields = ("first_name", "last_name", "email", "username",
"password1", "password2")
model = get_user_model()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["first_name"].label = ''
self.fields["first_name"].widget.attrs["placeholder"] = "First Name"
self.fields["last_name"].label = ''
self.fields["last_name"].widget.attrs["placeholder"] = "Last Name"
self.fields["email"].label = ''
self.fields["email"].widget.attrs["placeholder"] = "Email"
self.fields["username"].label = ''
self.fields["username"].widget.attrs["placeholder"] = "Username"
self.fields["password1"].label = ''
self.fields["password1"].widget.attrs["placeholder"] = "Password"
self.fields["password2"].label = ''
self.fields["password2"].widget.attrs["placeholder"] = "Confirm
Password"
class UserLoginForm(AuthenticationForm):
class Meta:
fields = ("email", "password")
model = get_user_model()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["email"].label = ''
self.fields["email"].widget.attrs["placeholder"] = "Email"
self.fields["password"].label = ''
self.fields["password"].widget.attrs["placeholder"] = "Password"
#views.py
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth import login, logout
from django.contrib.auth.forms import AuthenticationForm
from django.core.urlresolvers import reverse_lazy
from django.views import generic #for FOrmView
from . import forms
from .models import *
from django.views.generic import (
ListView,
DetailView,
CreateView,
UpdateView,
DeleteView
)
# Create your views here.
'''
class LoginView(generic.FormView):
form_class = AuthenticationForm
success_url = reverse_lazy("dashboard:dashboard")
template_name = "accounts/login.html"
def get_form(self, form_class=None):
if form_class is None:
form_class = self.get_form_class()
return form_class(self.request, **self.get_form_kwargs())
def form_valid(self, form):
login(self.request, form.get_user())
return super().form_valid(form)
'''
class LogoutView(generic.RedirectView):
url = reverse_lazy("login")
def get(self, request, *args, **kwargs):
logout(request)
return super().get(request, *args, **kwargs)
class SignUpView(generic.CreateView):
form_class = forms.UserCreateForm
success_url = reverse_lazy("login")
template_name = "accounts/signup.html"
class UserListView(LoginRequiredMixin, ListView):
context_object_name = "users"
model = User
class UserDetailView(LoginRequiredMixin, DetailView):
model = User
class UserUpdateView(LoginRequiredMixin, UpdateView):
model = User
#models.py
from django.contrib.auth.models import (
AbstractBaseUser,
BaseUserManager,
PermissionsMixin
)
from django.db import models
from django.utils import timezone
#from django.core.mail import send_mail
# Create your models here.
class UserManager(BaseUserManager):
def create_user(self, first_name, last_name, email, username, password):
if not first_name:
raise ValueError("You must enter your first name")
if not last_name:
raise ValueError("You must enter your last name")
if not email:
raise ValueError("You must enter an email address")
if not password:
raise ValueError("You must create a password")
user = self.model(
first_name = first_name,
last_name = last_name,
email = self.normalize_email(email),
username = username
)
user.set_password(password)
user.save()
return user
def create_superuser(self, first_name, last_name, email, username,
password):
user = self.create_user(
first_name,
last_name,
email,
username,
password
)
user.is_staff = True
user.is_superuser = True
user.save()
return user
class User(AbstractBaseUser, PermissionsMixin):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField(unique=True)
username = models.CharField(max_length=50, unique=True)
bio = models.CharField(max_length=255, blank=True, default="")
title = models.CharField(max_length=100, blank=True, default="")
prof_image = models.ImageField(blank=True, null=True)
digital_sig = models.ImageField(blank=True, null=True)
date_joined = models.DateTimeField(default=timezone.now)
last_login = models.DateTimeField(null=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["first_name", "last_name"]
def __str__(self):
return self.username
def get_short_name(self):
return self.username
def get_long_name(self):
return"{} (@{})".format(self.first_name, self.last_name)
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/cf782671-a33b-4aea-9fd5-f5931321eaaa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.