Apache & mod_python: I don't receive anything with POST method
tengounplanb at gmail.com
tengounplanb at gmail.com
Thu Nov 27 09:13:23 EST 2008
On 26 nov, 23:22, Graham Dumpleton <Graham.Dumple... at gmail.com> wrote:
> On Nov 27, 12:21 am, tengounpl... at gmail.com wrote:
>
>
>
> > Hi,
>
> > I'm using a simple form to make possible the users of our site upload
> > files.
>
> > <html>
> > <head><meta http-equiv="Content-Type" content="text/html;
> > charset=iso-8859-1"></head>
> > <body>
> > <form method="post" enctype="multipart/form-data" action="/ws/
> > upload.py"/>
> > <input name="upfile" type="file" size="50"/><br>
> > <input type="submit" value="send"/>
> > </form>
> > </body>
> > </html>
>
> > The "upload.py" looks like this:
>
> > from mod_python import apache, util;
>
> > def index(req):
> > form = util.FieldStorage(req, keep_blank_values=1)
> > try:
> > # form is empty here
> > # return form --> I get "{}"
> > ufile = form.get('upfile', None)
>
> > if not form.has_key('upfile'):
> > return ":( No 'upfile' key"
>
> > # some checks. I never get beyond here
>
> > ufile = form['upfile']
> > if ufile.file:
> > return ufile.file.name
> > else:
> > return ":( It's not a file"
> > except Exception, e:
> > return 'Fail: ' + str(e)
>
> > I'm getting an empty 'form'. No 'upfile' key at all. I've tried to add
> > some other text fields but the result is the same: empty. If I use GET
> > method with text fields, it works properly.
>
> > Currently I'm using:
> > Apache 2.2.9 (initially I used Apache 2.2.3 too)
> > mod_python 3.3.1 (initially I used mod_python 3.2.10 too)
> > Python 2.5.2
>
> Which is the correct result for the code you are using.
>
> The problem is that you appear to be using mod_python.publisher which
> does its own form handling before you are even getting a chance, thus
> it is consuming the request content.
>
> For how to handle forms in mod_python.publisher see:
>
> http://webpython.codepoint.net/mod_python_publisher_forms
>
> Graham
Hi,
I should get a non-empty "form".
With the following html
<html>
<head><meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"></head>
<body>
<form method="get" action="/ws/upload.py"/>
<input type="text" name="some_text" size="50"/><br>
<input type="submit" value="enviar"/>
</form>
</body>
</html>
...and the following "upload.py":
from mod_python import util, apache
def index(req):
form = util.FieldStorage(req, keep_blank_values=1)
try:
some_text = form.get('some_text', None);
return form.items
except Exception, e:
return 'Fail: ' + str(e)
...I get (writting "Python" in the text box)
[('some_text', Field('some_text', 'Python'))]
So, I have a "form" with a non-empty structure of (key, value), and
I'm able to get the value I'm looking for:
...
some_text = form.get('some_text', None) # It's not empty anymore
...
Thanks
León
More information about the Python-list
mailing list