| Issue 35: | Django Templates Don't Work | |
| 1 person starred this issue and may be notified of changes. | Back to list |
When viewing Django template files (such at this [1]) in the source
browser the syntax highlighting makes the code extremely difficult to
read. Pygments supports Django template highlighting[2], and could be
a good reference. As for detection of the highlighter to use,
detection of the iconic django {{ }} tags would probably be a safe
enough indicator.
[1] - http://code.google.com/p/rietveld/source/browse/trunk/templates/all.html
[2] -
http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/templates.py#L193
|
|
,
Jan 14, 2009
Is the content of a {%...%} or {{...}} arbitrary python or is it restricted to python
identifiers?
|
|
,
Jan 14, 2009
Oh, and to avoid unnecessarily introducing multi-line tokens into HTML, can the
{%...%} or {{...}} constructs contain newline characters or the < character? If so,
is it common for them to?
|
|
,
Jan 18, 2009
Mike, the contents of both {%...%} (template tags) and {{...}} (variables, possibly
piped through filters), can potentially be anything in Unicode space. The first
"word" will typically be similar to a Python identifier, but the remainder are
arguments which can be arbitrary strings.
Neither grouping can contain newlines. They're unlikely to contain things like the
'<' character. Experience (fwiw) suggests that the most likely things are going to be
alphanumeric characters (including alphabetic characters outside the ASCII range, and
that does happen as the Django international audience is huge), whitespace and double
and single quotes. The rest are legal (except for newlines), but less common.
|
|
,
Jan 20, 2009
Thanks.
Are they typically short?
I ask since if I can't distinguish HTML source from HTML containing Django template
groups, I want to be able to come up with a definition that admits few false positives.
The definitions I'm leaning towards so far are:
/\{\{[^\0xa-0xd\x85\u2028\u2029]{2,40}?\}\}/
and
/\{\%[^\0xa-0xd\x85\u2028\u2029]{2,40}?\%\}/
http://docs.djangoproject.com/en/dev/topics/templates/#topics-templates describes the
content as a language that has a few keywords, pythonesque identifiers, uses | and :
for piping and parameterization, and which has numeric and double-quoted string
literals, without string interpolation. It's unclear whether it has reserved
keywords but that distinction isn't important to me.
Status: Accepted
|
|
|
|