John Salerno a écrit :
[EMAIL PROTECTED] wrote:

For which definitions of "content" and "logic" ???

The point of mvc is to keep domain logic separated from presentation
logic, not to remove logic from presentation (which just couldn't
work). Templating systems are for presentation logic. Whether they
work by embedding an existing complete programmation language or by
providing they're own specialised mini-language (or a mix of both) is
not the point here IMHO.

No, I don't mean presentation logic at all. I mean something along the lines of combining HTML (which is what I refer to as "content") and Python (which is what I meant by "logic").

Some (if not most) templating systems use their own mini-language to handle presentation logic.

So for example, if you have code like this (and this isn't necessarily proper code, I'm just making this up, but you'll see what I mean):

<body>
  <h1>Big Important Topic</h1>
    <p>This is where I say something important about</p>
      <ol>
      % for topic in topics:
          <li>${topic}</li>
      </ol>
</body>


In Django's template system, this would looks like:

<body>
  <h1>Big Important Topic</h1>
    <p>This is where I say something important about</p>
    <ol>
      <!-- no, this is not Python -->
      {% for topic in topics %}
        <li>{{ topic }}</li>
      {% endfor %}
     </ol>
</body>

In ZPT, it would be:

<body>
  <h1>Big Important Topic</h1>
    <p>This is where I say something important about</p>
    <ol>
     <tal:repeat repeat="topic topics">
      <li tal:content="topic">Yadda</li>
     </tal:repeat>
    </ol>
</body>


Humph, I just made up that example to make the point that when you no longer have pure HTML, but instead have programmatic logic (Python) mixed in with the HTML, then you are mixing content and logic.

However, as soon as I finished typing it out, it occurred to me that even the so-called logic in this example is really only producing more "content" to display.

Indeed.

So maybe my question was a little premature.

The meme "thou shall not mix domain logic with presentation" is very often misunderstood as "you must not have anything else than html in templates", which is just plain non-sense. Even declarative templating systems (cf Has's post) require some special (ie: non standard) stuff to work.

Or could it just be that this is a *good* way to mix HTML and Python, and there are other ways which may be bad?

Bingo.

(For example, connecting to a database, like Sebastian's example. That definitely seems out of place in an HTML file.)

Yeps.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to