#31189 closed Cleanup/optimization (wontfix)

Password field help texts generates invalid html when using as_p() and as_table() helpers.

Reported by: Marc Nieper-Wißkirchen Owned by: nobody
Component: contrib.auth Version: 3.0
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Marc Nieper-Wißkirchen)

The help text for the password field of, say, the UserCreationForm, is generated here: https://github.com/django/django/blob/master/django/contrib/auth/password_validation.py#L78 and is an html list. The form methods, as_table' and as_p', however, wrap the help text into a span tag. In the resulting rendered HTML, there will thus be a ul tag inside a span tag, which is invalid html.

To solve this problem, the span tag needs at least to be a div. But then there is the problem that `as_p' renders everything inside a paragraph, which also cannot take an html list, only phrasing content.

Change History (2)

comment:1 Changed 17 months ago by Marc Nieper-Wißkirchen

Description: modified (diff)

comment:2 Changed 17 months ago by Mariusz Felisiak

Resolution: wontfix
Status: newclosed
Summary: django.contrib.auth: Password field help text generates invalid htmlPassword field help texts generates invalid html when using as_p() and as_table() helpers.
Type: BugCleanup/optimization

It was fixed in admins' templates in 2d26b4637f0318736955b54b34f270fe9500f795, see #27207.

Forms in django.contrib.auth.forms are designed to render properly in Django admin and I don't think that we should override helpers in admin forms to generate valid HTML in all helpers as_ul(), as_p(), and as_table(), moreover even overriding help_text_html won't help in as_p(). There's no feasible solution. You can re-use templates from admin/templates/admin, e.g. admin/templates/admin/includes/fieldset.html if you don't want to write you're own custom templates.

Note: See TracTickets for help on using tickets.
Back to Top