[Zope-dev] getting request variables values

Steve Alexander steve@cat-box.net
Fri, 21 Jul 2000 07:37:57 +0100


Chris Withers wrote:
> 
> Evan Simpson wrote:
> > The value you're after is stored in the 'environ' section of the request.
> > Unlike 'other' and 'cookies' keys, 'environ' keys can't generally be fetched
> > as attributes or keys of REQUEST.  You need to access them as
> > REQUEST.environ['keyname'].
> 
> Heh, I thought so, I presume REQUEST.get won't get out of environ
> either?
> 
> I posted this in the collector and was told it behaved as expected (and
> would suck the key out of any of the sub-dictionaries)
> 
> What's the real story? ;-)

I'm looking at 2.2.0final.

From the comments in the code, it *ought* to look in the environment
first.

  def __getitem__/__getattr__ from HTTPRequest.py:

        """Get a variable value

        Return a value for the required variable name.
        The value will be looked up from one of the request data
        categories. The search order is environment variables,
        other variables, form data, and then cookies. 
        
        """

However, looking in the code, it starts off by looking in "other", and
doesn't look in "environ" at all.

I suggest a patch to go right after the method's docstring:

    def __getitem__(self,key,
                    default=_marker, # Any special internal marker will
do
                    URLmatch=regex.compile('URL[0-9]+$').match,
                    BASEmatch=regex.compile('BASE[0-9]+$').match,
                    ):
        """Get a variable value

        Return a value for the required variable name.
        The value will be looked up from one of the request data
        categories. The search order is environment variables,
        other variables, form data, and then cookies. 
        
        """ #"
+       environ=self.environ
+       if environ.has_key(key):
+           return environ[key]
        other=self.other
        if other.has_key(key):
            if key=='REQUEST': return self
            return other[key]


--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net