[ZDP] BackTalk to Document The Zope Book (2.6 Edition)/Using Zope Page Templates

webmaster at zope.org webmaster at zope.org
Sun Feb 1 03:23:23 EST 2004

A comment to the paragraph below was recently added via http://zope.org/Documentation/Books/ZopeBook/2_6Edition/ZPT.stx#2-59


    To start, you need to write just one line of Python.  Go to the
    'FileLib' folder and create a 'Script (Python)' in that folder.
    Give the script the id 'files' and click *Add and Edit*.  Edit the
    script to contain the following Python code::

      ## Script (Python) "files"
      return container.objectValues(['File'])

      % Anonymous User - Nov. 4, 2003 10:52 am:
       Thanks. We are learning about TAL and three pages into it we are confronted with Python.
       Is there no way of doing this with TAL?

      % Anonymous User - Nov. 10, 2003 11:00 pm:
       No - there isn't (the short answer, but there are ways, it's just not the point). The point is to separate
       the presentation from the actual logic. If you want to do logic in your templates, take a look at DTML. If
       you are reading this to build a web application, you *will* need to know Python. It's not easy learning brand
       new stuff, especially if you are in completely unfamiliar territory: take a break, plod through the reading
       (some things will be explained in time), and if you are still confused join the mailing list and ask some
       questions. I've found the best way is to play with it yourself. I admit that takes *a lot* of time, but you
       really won't know it otherwise.

      % Anonymous User - Nov. 20, 2003 9:35 am:
       The ['file'] bit means only return items in the folder which are files (as opposed to dtml methods or
       something) right?
       If you typed return container.objectValues() then you'd get everything in the folder, rather than just the
       files, right?
       Python: container.objectValues()
       TAL: content/objectValues

       These are referencing the same variable/property/thing just using different syntax. Yes?

       It would be nice to know what the ##'s are for.

       If this is really a newbie tutorial then it wouldn't do any harm to spoon feed us a bit ;-P

      % Anonymous User - Dec. 2, 2003 11:18 pm:
       To answer your questions:
       correct (but the capitalization is significant);
       the lines that begin with # are comments which, in the case of zope's Python Scripts, are actually mildly
       significant in ways that will be explained in later chapters. IMHO those lines should be left out of this
       example, it's not necessary at this stage and it's just distracting.

      % Anonymous User - Jan. 17, 2004 8:30 am:
       could you explain the differences between




      % ExileJedi - Jan. 18, 2004 3:25 pm:
       Looks like objectValues() takes a list of types of things to return, and returns you a list of items that
       match those types. The square brackets indicate a Python list, eg ['Fred','Barney','Wilma']. When you call
       container.objectValues(['File']), you just want the objects that are considered "File"s. You could call
       contain.objectValues(['File','Smurf']) if you also had objects that would be considered the "Smurf" type, as
       opposed to the "File" type. If you instead call container.objectValues('File'), you can only get items of the
       one "File" type that you have passed; you're passing a string rather than a list.

      % Anonymous User - Feb. 1, 2004 3:23 am:
       Ahhh, please kill me!! "Spoon feed me because I'm a newbie"?!! Get a clue dude. If you don't understand what
       some of the Python means go and RTFM on Python. What should be done if someone complains that they can't
       understand the Zope book because they don't understand English? Provide a definition of the English language?
       If you don't know what the '#'s are then you are WAY out of your depth dude. Go and do some reading on
       programming etc.

More information about the ZDP mailing list