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.

Reply via email to