Just started playing with Zope, so apologies if this is covered in the documentation somewhere. I have to say that Zope is really cool. I'm trying to post variables to a ZPT, and have that ZPT call a script which might do something with the form variables. Normally, if I were to call my script from a URL I could use 'http://zopeserver/MyScript?theArg=foo', and assuming the Script named MyScript had an argument named theArg, everything would work. However, if I have a ZPT called myZPT.html, I call it with a URL such as 'http://zopeserver/myZPT.html?theArg=foo', and myZPT.html contains something like '<span tal:replace="here/MyScript" />', the parameter theArg is not correctly passed to MyScript, and MyScript fails to execute because it was called with too few arguments. I'm aware I can declare MyScript to take no arguments and just access them as context.REQUEST.theArg, but then MyScript isn't very useful if you try to use it via XML-RPC. I kind of want to be able to call MyScript using either XML-RPC or internally from ZPT. I can't declare the argument for MyScript as 'theArg=context.REQUEST.get("theArg", None)' because it complains that 'context' doesn't exist at that point. I could do something like declaring MyScript to have argument list 'theArg=None', and then do something like 'if not theArg: theArg = context.REQUEST.get("theArg", None)' but that's ugly. Presumably I could do something like 'tal:replace="python: here.MyScript(theArg=request.theArg)"' but that seems ugly too: to include a 'python:' TALES Python expression where (it seems to me) a TALES path expression should do just fine. Is there some clean way around this? One might consider that when a call is made to an object from ZPT, and that object has a known argument list, ZPT/Zope should attempt to fill in the arguments to that object just as if it were called from XML-RPC (or directly via a URL). TIA, darkness --