#29115: Rendering of admin forms with Jinja2
-----------------------------------------+------------------------
Reporter: Joey Wilhelm | Owner: nobody
Type: Uncategorized | Status: new
Component: contrib.admin | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------+------------------------
As previously posted to the django-developers mailing list:
According to the documentation[1], "...django.contrib.admin doesn’t
include Jinja2 templates for its widgets due to their usage of Django
template tags."
After some digging, though, it appears that the "spaceless" tag is the
only one in use which is not readily available in Jinja2. And this is only
used in
django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html.
So, I was able to reimplement this template in Jinja2, minus the spaceless
tag. On a few admin pages with large numbers of inlines, the load time was
cut in half or better.
But, of course, there was one more small catch. I had to use the
"TemplateSetting" form renderer rather than the "Jinja2" form renderer,
because I had no way to alter the Jinja2 environment for the form
renderer. The environment I refer to in my settings, however, is pulled
almost verbatim from the documentation for the Jinja2 backend[2]. I only
had to add one thing: i18n. Which turns out to be fairly simple to do with
Jinja2 + Django. I was even able to use the "gettext" and "ngettext" from
django.utils.translation.
So what I'm proposing here boils down to a few pieces:
1. Create jinja2 templates for the admin widgets. I already have one of
these done, and the others look like it may be possible to simply copy
them.
2. Document how to add i18n to the Jinja2 environment
3. Perhaps provide a default environment to Jinja2, providing both static
and url, as currently documented in the example Jinja2 environment, along
with i18n. This would provide a better out-of-the-box experience for
users, including being able to set the FORM_RENDERER to Jinja2, and have
the admin Just Work.
--
Ticket URL: <https://code.djangoproject.com/ticket/29115>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/054.4d8b1fbf6a31630cfcfc5d7ffd554155%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.