Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I override the django AuthenticationForm input css class?

I have a django site using the basic django registration framework. I have my login page working fine, but I want to change the css class on the inputs. The form passed to the login page looks to be an AuthenticationForm class.

What would be a good way to add a css class to the username, and password fields?

like image 346
rmontgomery429 Avatar asked Feb 26 '10 03:02

rmontgomery429


2 Answers

Sub class your auth form

forms.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput

class RFPAuthForm(AuthenticationForm):
    username = forms.CharField(widget=TextInput(attrs={'class': 'span2','placeholder': 'Email'}))
    password = forms.CharField(widget=PasswordInput(attrs={'class': 'span2','placeholder':'Password'}))
like image 182
Victor 'Chris' Cabral Avatar answered Nov 17 '22 12:11

Victor 'Chris' Cabral


I do what you want like this:

def login(request):
    form = AuthenticationForm(request)
    form.fields['username'].widget.attrs['class'] = "custom_css"
    form.fields['password'].widget.attrs['style'] = "background:red"
    return render_to_response("login.html", {'form':form},
                          context_instance=RequestContext(request))
like image 24
panchicore Avatar answered Nov 17 '22 13:11

panchicore