[mod_python] get post to a class

maker joe makerjoe at gmail.com
Fri Jun 22 02:38:40 EDT 2007


hi graham
you said:
> I don't see how that will work at all. At least not if you are using
> publisher.

im using publisher and it works, so now im confused
but

for
 So, maybe you should explain in english what you expect to happen.
>

anyway all these question were about using modpython to develope a
module driven application (not generator)  were the system gets
distinct behaviours as per what module has to be imported from data
modified on a master database (mysql),  and nothing else

thank you in advance for all your input
joseluis


On 6/21/07, Graham Dumpleton <graham.dumpleton at gmail.com> wrote:
> On 22/06/07, maker joe <makerjoe at gmail.com> wrote:
> > perhaps a little bit simpler would be
> >
> > go.py
> > -------
> > import myclasses
> > c=dispatch()
> > c.message(req)
> >
> > myclasses.py
> > --------------------
> > class dispatch:
> >     def message(self,req)
> >          req.write('hello %s'%req.form['name'])
> >
> > http://localhost/my.py/go?name=joe
>
> I don't see how that will work at all. At least not if you are using
> publisher. If you have instead written your own handler which performs
> its own URL dispatch then maybe it may work, but I don't know how your
> dispatcher works.
>
> If I try and read into your code as to what you perhaps meant, there
> is a big difference in that with the approach I was suggested, there
> would be a separate instance of the class per request. In your code,
> by creating the instance at global scope within the module there will
> be one instance for the life of the process and all requests will be
> handled within that once instance. The consequences of using a single
> instance are that class attributes can't be used for transient data
> for a single request where one wants to use that as a means of
> communicating data between member functions.
>
> What you really need to do is explain what behaviour you want. One
> class instance to be used for all requests, or one per request. For
> all I know, all you were perhaps after was to know how to make a URL
> traverse into objects, but your URL examples haven't been suggestive
> of that.
>
> So, maybe you should explain in english what you expect to happen.
>
>
>
> Graham
>
> > On 6/21/07, Graham Dumpleton <graham.dumpleton at gmail.com> wrote:
> > > On 22/06/07, maker joe <makerjoe at gmail.com> wrote:
> > > > hi graham
> > > >
> > > > is it possible to get/post to a class?
> > > >
> > > > my.py
> > > > ---------
> > > > class A:
> > > >     def go(self,req):
> > > >          req.write('hello'+%s)%name
> > > >
> > > > http://localhost/my.py/A/go?name=joe
> > >
> > > Classes will not auto instantiate.
> > >
> > > If your intention is to be able to create an instance of A per
> > > request, use something like:
> > >
> > >   class Instance:
> > >
> > >     def __init__(self, type, **kwargs):
> > >         self.__type = type
> > >         self.__kwargs = kwargs
> > >
> > >     def __call__(self, **args):
> > >         assert(type(self.__type) in [types.ClassType, types.TypeType])
> > >         return self.__type(**self.__kwargs)(**args)
> > >
> > >     class A:
> > >         def __call__(self, req):
> > >             req.write('hello'+%s)%name
> > >
> > >     go = Instance(A)
> > >
> > > URL would then be:
> > >
> > >    http://localhost/my.py/go?name=joe
> > >
> > > If the class has a constructor, use keyword arguments to Instance() to
> > > pass any arguments:
> > >
> > >     class A:
> > >         def __init__(self, arg1, arg2):
> > >             ...
> > >         def __call__(self, req):
> > >             req.write('hello'+%s)%name
> > >
> > >     go = Instance(A, arg1='value', arg2='value')
> > >
> > > This presumes you are using publisher.
> > >
> > > Graham
> > >
> >
>


More information about the Mod_python mailing list