Hello Chris, On Wed, 31 Jul 2002 19:03, you wrote:
From a Python script I use a return statement like:
return container.xxx.yyy.zzz.aaa(container.REQUEST)
aaa is a dtml doc and the REQUEST object has had some attributes set that aaa will use. aaa is nested down in the tree xxx.yyy.zzz
The result of this is that it seems that Zope appends the return value to the calling URL, hence it gets longer and longer and when returned Zope does things I rather it didn't, like rerunning SQL methods.
The above will return the result of rendering aaa, is that what you want?
Of course, but the url gets appended to the calling url, thus http://fred.com/xxx/yyy/zzz/ would become http://fred.com/xxx/yyy/zzz/xxx/yyy/zzz/aaa or something like that. My meagre understanding of Zope is that Zope's acquisition will take care of this but at some cost. I'd like to get http://fred.com/xxx/yyy/zzz/aaa which is what I assumed return container.xxx.yyy.zzz.aaa(container.REQUEST) would translate to.
If I apply absolute_url to this as in:
return container.xxx.yyy.zzz.aaa.absolute_url()
I get a string returned not a renderable object.
Well indeed, what were you expecting? Actually, your first example returns a string too, just a long one with lots of HTML in it ;-)
Which is what I am expecting but it's not an absolute url unless we want to call an absolute url an url which contains much repetition of paths.
I try another strategy and do
return context.xxx.yyy.zzz.absolute_url() + '/aaa'
expecting to force a redirect but it fails. Deep sighs.
Why? You're just returning a very short string there, one which you'e appended '/aaa' to.
If you want to redirect, you'd do:
return context.REQUEST.RESPONSE.redirect(container.xxx.yyy.zzz.aaa.ab solute_url())
...but I don't think you do, since you're loose your current REQUEST object when you do that.
Hence these other efforts. But this was tinkering, looking for clues. Zope isn't my forte.
I want to return object references from Python scripts as absolute urls
Object references and absolute URLs are two very different things.
What is it that you're trying to do? (high level, don't explain how you're trying to solve the problem which is somethign altogether different ;-)
If a script executes return container.xxx.yyy.zzz.aaa(container.REQUEST) isn't that a reference to a Zope object? and doesn't that reference return an URL? The objective is (for example) to call a Python script as the action of a form element, do some work with the form fields, populate the REQUEST with results and then (via the return statement) push a page back to the user, in brief: 1 Web client views form, fills form fields, submits form 2 Submit calls Python script 3 Script does database op 4 Script returns another web page all of which works but the url gets longer and longer. Thanks Chris cheers David