Re: Missunderstanding of DTML Methods and acquisition?
What I'm most confused about right now is when it is necessary to pass the client and namespace and when you can omit it. I'm also very unclear as to just what the 'client' is, especially since most of the examples I've seen involve passing in None for the client.
I found the source to String.__call__ (in DocumentTemplate/DT_String.py) very enlightening. This is the same __call__ method that DTMLMethod and DTMLDocument inherit. def __call__(self,client=None,mapping={},**kw): '''\ Generate a document from a document template. The document will be generated by inserting values into the format string specified when the document template was created. Values are inserted using standard python named string formats. The optional argument 'client' is used to specify a object containing values to be looked up. Values will be looked up using getattr, so inheritence of values is supported. Note that names beginning with '_' will not be looked up from the client. The optional argument, 'mapping' is used to specify a mapping object containing values to be inserted. Values to be inserted may also be specified using keyword arguments. Values will be inserted from one of several sources. The sources, in the order in which they are consulted, are: o Keyword arguments, o The 'client' argument, o The 'mapping' argument, o The keyword arguments provided when the object was created, and o The 'mapping' argument provided when the template was created. ''' You can see that __call__ with no arguments uses defaults of None and {} for client and mapping, so essentially the template has nowhere to look up attributes. This is why you must pass these explicitly. Apparently you can also pass a mapping and keywords to the constructor but I don't think this is possible from the management interface. More ZZen is to be found in DocumentTemplate/DT_Util.py. This module contains the expression evaluation machinery, as well as the code to the special namespace variable, '_'. -jfarr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hi! I'm a signature virus. Copy me into your .sig to join the fun! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
participants (1)
-
Jonothan Farr