Refs. #22383
People involved in discussion uptil now on ticket on IRC or ticket: timograham, loic84, apollo13 and me.
A ticket has been opened asking to add HTML5 required tag in forms for the fields which are required for database entry.
--To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/f7f8a915-8cc4-4505-8bc3-770599afeb30%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
I think adding the `required` attribute but ignoring the other possible html form validations (like `min` and `max` [1] 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.
Gregor
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.