style guide/autoformatter/linter for Django templates?

744 views
Skip to first unread message

Steve Howell

unread,
Nov 27, 2009, 5:18:05 PM11/27/09
to Django users
I am wondering if there is a style guide anywhere for writing Django
templates. Also, are there programs to automatically format your
templates...to indent block tags, for example? I know there are
autoformatters for HTML, but I am not aware of any tools that handle
Django tags. Also, it would be nice to have a command line tool that
detected unbalanced tags before rendering occurs, knowing, of course,
that that task is a little complicated due to conditionals.

Here is example code that I would wish to reformat:

{% load i18n %}
<div class="submit-row" {% if is_popup %}style="overflow: auto;"{%
endif %}>
{% if show_save %}<input type="submit" value="{% trans 'Save' %}"
class="default" name="_save" {{ onclick_attrib }}/>{% endif %}
{% if show_delete_link %}<p class="deletelink-box"><a
href="delete/" class="deletelink">{% trans "Delete" %}</a></p>{% endif
%}
{% if show_save_as_new %}<input type="submit" value="{% trans
'Save as new' %}" name="_saveasnew" {{ onclick_attrib }}/>{%endif%}
{% if show_save_and_add_another %}<input type="submit" value="{%
trans 'Save and add another' %}"
name="_addanother" {{ onclick_attrib }} />{% endif %}
{% if show_save_and_continue %}<input type="submit" value="{%
trans 'Save and continue editing' %}"
name="_continue" {{ onclick_attrib }}/>{% endif %}
</div>

It seems like this would be more readable. The if statements get
indented, except where they are inside an HTML tag. Also the
statements inside the div get indented.

{% load i18n %}
<div class="submit-row" {% if is_popup %}style="overflow: auto;"{%
endif %}>
{% if show_save %}
<input type="submit" value="{% trans 'Save' %}"
class="default" name="_save" {{ onclick_attrib }}/>
{% endif %}
{% if show_delete_link %}
<p class="deletelink-box"><a href="delete/"
class="deletelink">{% trans "Delete" %}</a></p>
{% endif %}
{% if show_save_as_new %}
<input type="submit" value="{% trans 'Save as new' %}"
name="_saveasnew" {{ onclick_attrib }}/>
{%endif%}
{% if show_save_and_add_another %}
<input type="submit" value="{% trans 'Save and add
another' %}" name="_addanother" {{ onclick_attrib }} />
{% endif %}
{% if show_save_and_continue %}
<input type="submit" value="{% trans 'Save and continue
editing' %}" name="_continue" {{ onclick_attrib }}/>
{% endif %}
</div>

Steve Howell

unread,
Dec 1, 2009, 2:33:57 AM12/1/09
to Django users
Just following up on this a few days later, in case it got lost in the
shuffle due to the weekend and U.S. holiday.

On Nov 27, 2:18 pm, Steve Howell <showel...@yahoo.com> wrote:
> I am wondering if there is a style guide anywhere for writing Django
> templates.  Also, are there programs to automatically format your
> templates...to indent block tags, for example?  I know there are
> autoformatters for HTML, but I am not aware of any tools that handle
> Django tags.  Also, it would be nice to have a command line tool that
> detected unbalanced tags before rendering occurs, knowing, of course,
> that that task is a little complicated due to conditionals.
>
> [...]

Tom Evans

unread,
Dec 1, 2009, 6:33:45 AM12/1/09
to django...@googlegroups.com
vim 7.2 comes with two syntax, highlighting and indentation modes for django.

"set ft=django" for just django template syntax highlighting/indentation
"set ft=htmldjango" for mixed HTML/django template syntax highlighting

Cheers

Tom

Steve Howell

unread,
Dec 1, 2009, 11:13:50 AM12/1/09
to Django users

On Dec 1, 3:33 am, Tom Evans <tevans...@googlemail.com> wrote:
That's a start, but is there anything that runs from the command
line? Am I correct that vim does not indent blocks for django tags,
only HTML tags?

Tom Evans

unread,
Dec 1, 2009, 11:28:33 AM12/1/09
to django...@googlegroups.com
Vim runs from the command line, and could be probably be coerced to
behave like indent. It'd be more than a bit hacky though!

For djangohtml, it uses HTML's indentation rules. There are benefits
to this, your HTML comes out all nicely formed.

Cheers

Tom

Antoni Aloy

unread,
Dec 1, 2009, 11:49:44 AM12/1/09
to django...@googlegroups.com
2009/12/1 Tom Evans <teva...@googlemail.com>:
> On Tue, Dec 1, 2009 at 4:13 PM, Steve Howell <show...@yahoo.com> wrote:
>>
>> On Dec 1, 3:33 am, Tom Evans <tevans...@googlemail.com> wrote:
>>> On Tue, Dec 1, 2009 at 7:33 AM, Steve Howell <showel...@yahoo.com> wrote:
>>> > Just following up on this a few days later, in case it got lost in the
>>> > shuffle due to the weekend and U.S. holiday.
>>>
>>> > On Nov 27, 2:18 pm, Steve Howell <showel...@yahoo.com> wrote:
>>> >> I am wondering if there is a style guide anywhere for writing Django
>>> >> templates.  Also, are there programs to automatically format your
>>> >> templates...to indent block tags, for example?  I

I have been playing with Ulipad editor,
http://code.google.com/p/ulipad/, it has Django template syntax
support as well as Django project support.

It's a nice and fast editor, and it has one of the best autocomplete
feature for Python and Django that I have seen so far.


--
Antoni Aloy López
Blog: http://trespams.com
Site: http://apsl.net
Reply all
Reply to author
Forward
0 new messages