|#22383 Add the HTML5 required tag to the input fields which are required for database entry||Anubhav Joshi||4/10/14 10:49 AM|
A ticket has been opened asking to add HTML5 required tag in forms for the fields which are required for database entry.
There have been several issues:
People involved in discussion uptil now on ticket on IRC or ticket: timograham, loic84, apollo13 and me.
|Re: #22383 Add the HTML5 required tag to the input fields which are required for database entry||Anubhav Joshi||4/10/14 11:00 AM|
"required for database entry" --> fields have required attribute as True
|Re: #22383 Add the HTML5 required tag to the input fields which are required for database entry||Gregor Müllegger||4/10/14 4:27 PM|
I think adding the `required` attribute but ignoring the other possible html form validations (like `min` and `max`  for <input> that are used by the forms.IntegerField) seems a bit half-hearted.
My opinion is that having the required attribute is pretty cool, but should come with all other possible validations baked in then.
django-floppyforms already includes those validations already in the HTML output of forms and it turns out to be quite useful in many situations. Even if you turn of the browser validation by adding the novalidate attribute to the <form> tag, it's good to have this meta data in the HTML representation, e.g. for styling.
|Re: #22383 Add the HTML5 required tag to the input fields which are required for database entry||Anubhav Joshi||4/11/14 12:51 AM|
Thanks Gregor, but I think here we first need to make it clear do we really want it.
|Re: #22383 Add the HTML5 required tag to the input fields which are required for database entry||Tim Graham||5/19/14 5:00 PM|
Here is a more concrete proposal based on Loic's comment in the ticket:
A normal deprecation cycle based on the value of a new `use_required_attribute` boolean attribute on forms.
To deprecate you could do:
class form.Form(object): #... use_required_attribute = None class BoundField(object): #... def as_widget(): if self.form.use_required_attribute is None: warnings.warn("The required attribute will be turned on by default in Django X.X unless you opt-out.") elif form.use_required_attribute: attrs['required'] = True
Now what happens next depends on the actual goal, do we want to use use_required_attribute as a permanent way to control this feature, or as a mere deprecation tool.
Personally I'm (Loic) not thrilled by this feature, although I know lot of people will want it, so I'd like to keep the switch.
Another point of interest, right now there is no way to tell a form that it should render as HTML4 or HTML5. When we discussed #20684 we acknowledged that if someone really cared about HTML4 validation, they could use required="required" instead of required=True, but if this becomes the default and we kill use_required_attribute, we'd be outputting HTML5.