I\'m using django built-in login forms and i want to add placeholders to username and password.
My template:
<
Yes you can add placeholder something like this,
class LoginForm(forms.ModelForm):
class Meta:
model = YourModelName
widgets = {
'username' : forms.TextInput(attrs = {'placeholder': 'Username'}),
'password' : forms.PasswordInput(attrs = {'placeholder': 'Password'}),
}
I hope this will work for you.
You can add another filter
@register.filter(name="add_place_holder")
def add_place_holder(field, place_holder=None):
if place_holder == None:
return field
else:
field.field.widget.attrs.update({'placeholder': place_holder})
return field
save this content in forms.py
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput
class MyAuthForm(AuthenticationForm):
class Meta:
model = User
fields = ['username','password']
def __init__(self, *args, **kwargs):
super(MyAuthForm, self).__init__(*args, **kwargs)
self.fields['username'].widget = forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'})
self.fields['username'].label = False
self.fields['password'].widget = forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Password'})
self.fields['password'].label = False
and save this content in main urls.py
from users.forms import MyAuthForm
urlpatterns = [
...
path('', auth_views.LoginView.as_view(template_name='users/login.html', authentication_form=MyAuthForm), name='login'),
...
]
please refer this site: https://github.com/django/django/blob/master/django/contrib/auth/views.py
save this content in forms.py
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput
class CustomAuthForm(AuthenticationForm):
username = forms.CharField(widget=TextInput(attrs={'class':'validate','placeholder': 'Email'}))
password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'}))
in your main urls.py
(where your login view called)
from django.contrib.auth import views as auth_views
from app.forms import CustomAuthForm
urlpatterns = [
url(r'^login/$', auth_views.login, name='login', kwargs={"authentication_form":CustomAuthForm}),
]
the extra thing that we done here is added an kwargs kwargs={"authentication_form":CustomAuthForm}
please use this for your future reference django.contrib.auth.views.LoginView and django.contrib.auth.forms.AuthenticationForm
In response to your comment on the other answer. You can subclass the the Authentication form.
from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput
class PlaceholderAuthForm(AuthenticationForm):
username = forms.CharField(widget=TextInput(attrs={'placeholder': 'Email'}))
password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'}))
or see the other function that was put in this question. --> How can I override the django AuthenticationForm input css class?