Opened 10 years ago

Last modified 8 months ago

#23356 new Cleanup/optimization

Unable to create template tag which behaves similar to {% verbatim %} — at Initial Version

Reported by: Jacob Rief Owned by: nobody
Component: Template system Version: dev
Severity: Normal Keywords: verbatim
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description

Currently it is impossible to create custom template tags which behave similar to {% verbatim %} .
The reason is in Lexer.create_token(). There, the class member self.verbatim is set for template blocks in "verbatim" state. It is impossible to turn on that state from outside, ie. a template tag.

Fixing this, would be as simple as changing if block_content[:9] in ('verbatim', 'verbatim ') to if block_content.startswith('verbatim') or to if block_content[:9] in ('verbatim', 'verbatim ', 'verbatim_').
Then all template tags beginning with verbatim..., would start in "verbatim" state. I don't assume this will break any existing code; who starts the name of a templatetag with 'verbatim...' if not for that purpose?

Background information why this is useful:
Templates syntax for Django and AngularJS is very similar, and with some caveats it is possible to reuse a Django template for rendering in AngularJS. I therefore attempted to add a context sensitive variation of the verbatim tag to this app https://github.com/jrief/django-angular, but was hindered by this issue.

BTW: This part of the Django code did not change from 1.6 up to master.

Change History (0)

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