Jan 18, 2017 · Updated: Nov 10, 2017 · by Tim Kamanin
Let's say we have a contact form and we want to add placeholders to this form
inputs so our rendered form has these cool input labels. How do we do that?
My form is a child of
ContactForm class provided by the django_contact_form
module. The module defines default fields for that form: name, email, and message. We need to add a placeholder attribute in our form class constructor.
In order to edit field widget attributes, we need to use the following code
self.fields['field_name'].widget.attrs['attribute_name'] = 'attribute_value'
field_name is a name of our field (email, for example),
attribute_name is a name of our attribute (in our case it's a placeholder)
attribute_value is a value we want the attribute to have (in our example
it's a label).
Here's the result:
from contact_form.forms import ContactForm # My form is a child of ContactForm class provided by django_contact_form module class MyContactForm(ContactForm): def __init__(self, data=None, files=None, request=None, recipient_list=None, *args, **kwargs): super().__init__(data=data, files=files, request=request, recipient_list=recipient_list, *args, **kwargs) self.fields['name'].widget.attrs['placeholder'] = 'name' self.fields['email'].widget.attrs['placeholder'] = 'e-mail' self.fields['body'].widget.attrs['placeholder'] = 'message'
Now you can render the form in a template and you'll see that inputs now have
Hope this one was helpful. Till next time.
Hey, if you've found this useful, please share the post to help other folks find it: