Jim Gallacher writes: > Daniel J. Popowich wrote: > > Jim Gallacher writes: > > > >>Jim Gallacher wrote: > >> > >> > >>>Using an internal_redirect messes with some of these attributes but not > >>>others. Those that change get their new values from the new_uri used in > >>>the redirect. Unchanged values are from the initial request. > >>> > >>>req.internal_redirect(new_uri) > >>> > >>>the_request unchanged > >>>unparsed_uri new > >>>parsed_uri new > >>>args new > >>>uri unchanged > >> > >> ^^^^^^^^^ > >> uri new (oops - wee typo there) > >> > >> > >>>hostname unchanged > > > > > > Jim, > > > > Really, I don't mean to be obtuse, but I'm not groking your point. > > Are you clarifying that for internal redirects the *source* for these > > attributes is different than what I was saying in my documentation > > Exactly. The documentation needs to account for the different behaviour > after an internal_redirect. I'll let the code talk for me as I can't > come up with adequate text. Assume you are using publisher with the > following code. > > Client request: > http://www.example.com/mod_python/parsed_uri/mptest.py?blah=de-blah > > mptest.py > --------- > > def index(req): > req.content_type = 'text/plain' > req.write('-----\nindex\n-----\n') > stuff(req) > # I'm sorry about the look of the next statement - > # thunderbird line wrapping issues > req.internal_redirect("http://ABCDE.example.org:666" > "/mod_python/parsed_uri/mptest/redirect" > "?inquisition=spanish#foo") > > def redirect(req): > req.write('\n\n--------\nredirect\n--------\n') > stuff(req) > > def stuff(req): > req.write('req.the_request: %s\n' % req.the_request) > req.write('req.uri: %s\n' % req.uri) > req.write('req.unparsed_uri: %s\n' % str(req.unparsed_uri)) > req.write('req.parsed_uri: %s\n' % str(req.parsed_uri)) > req.write('req.hostname: %s\n' % req.hostname) > req.write('req.args: %s\n' % req.args) > > > Output: > ======= > > ----- > index > ----- > req.the_request: GET /mod_python/parsed_uri/mptest?blah=de-blah HTTP/1.1 > req.uri: /mod_python/parsed_uri/mptest.py > req.unparsed_uri: /mod_python/parsed_uri/mptest > req.parsed_uri: (None, None, None, None, None, None, > '/mod_python/parsed_uri/mptest', 'blah=de-blah', None) > req.hostname: www.example.org > > req.args: blah=de-blah > > -------- > redirect > -------- > req.the_request: GET /mod_python/parsed_uri/mptest HTTP/1.1 > req.uri: /mod_python/parsed_uri/mptest.py/redirect > req.unparsed_uri: > http://ABCDE.example.org:666/mod_python/parsed_uri/mptest/redirect?inquisition=spanish#foo > req.parsed_uri: ('http', 'ABCDE.example.org:666', None, None, > 'ABCDE.example.org', 666, '/mod_python/parsed_uri/mptest/redirect', > 'inquisition=spanish', 'foo') > req.hostname: www.example.org > req.args: inquisition=spanish >
HOLY COW! Is it me or does this seem completely arbitrary? The value of the_request is wrong, too (doesn't include the query). I have no idea how to write this up concisely without driving people to perl. Can we ignore it and maybe it will go away? ;-) Daniel Popowich --------------- http://home.comcast.net/~d.popowich/mpservlets/