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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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