On Wed, Oct 27, 2010 at 3:46 PM, SmileyChris <smileych...@gmail.com> wrote:
> On Oct 27, 5:35 am, Łukasz Rekucki <lreku...@gmail.com> wrote:
>> I would like to bring this up again, because this is something that
>> would really improve readability of my templates. I'm mainly
>> interested in ticket #7817 (the include tag changes), but extending
>> "with" tag (ticket 9456) would keep things consistent.
>
> Here's a link to the ticket for the lazier ones among us:
> http://code.djangoproject.com/ticket/7817
>
> The main decision which needs to be made is one of syntax.
>
> The current proposal uses:
> {% include "name_snippet.html" with name="Joe" greeting="Hello" %}
> but this introduces an inconsistency with the {% with %} tag.
>
> Consistency would be nice, but I think this starts to look a bit
> confusing, static tokens outnumbering actual functional ones:
> {% include "name_snippet.html" with name as "Joe" and greeting as
> "Hello" %}
>
> My proposal is that the current {% with name as "Joe" %} format
> becomes the legacy format, and that the new format becomes (also
> allowing for multiple arguments):
> {% with name="Joe" greeting="Hello" %}
>
> Other tags which currently use the "as" token are: cycle, regroup and
> url. These all introduce a new variable into the current context,
> which does differ slightly from how {% with %} alters a variable in a
> contained scope. So my secondary (perhaps somewhat feeble) argument is
> that this actually helps to keep the "as" token's behaviour more
> consistent. :)
>
> Thoughts?

Repeating what I said to Chris in IRC for the benefit of posterity:

I don't have any strong preference either way, but whatever style we
pick, we need to be consistent.

I can certainly appreciate the clarity and terseness of the "foo=bar
pork=ham" syntax. My only concern would be whether it is too
"programmery" for the intended audience of the template language. We
have existing uses of the 'x=y' syntax -- such as in the {% url %}
tag, so I don't think this should be a major concern.

As David points out, the fact that {% blocktrans %} already does 'with
X as Y and A as B' would seem to set a precedent for the verbose
syntax. This verbose syntax is also syntactically consistent with what
the {% with %} tag already does, so there's no need to introduce a
'legacy' format.

I could swing either way on this. If we were starting with a clean
slate, I'd prefer the terse syntax, and I think Chris provides a
reasonable argument for how the usage of 'as' can be explained
conceptually. However, the legacy issue and the precendent set by {%
blocktrans %} provides a compelling argument to use the more verbose
syntax.

If we can introduce the terse syntax while maintaining the old syntax
(including the analogous change in  blocktrans), I think it would be a
worthwhile change. However, I certainly won't complain if public
opinion sways the other way.

Yours,
Russ Magee %-)

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to