[mod_python] Strangeness from the mod_python tutorial

Robert Squire rjsquire at ebi-online.com
Thu Oct 20 09:39:54 EDT 2005


Graham Dumpleton wrote:

> Strange.
>
> Are you typing in values for all input fields?
>
> Which browser are you using?
>
> I changed the action target to be my form debugger:
>
>   http://www.dscpl.com.au/projects/vampire/examples/templates/ 
> form_values.html
>
> and even with no input, it still displayed three actual form fields.
>
> What do you get if you point form at that URL?
>
> Grahamd
>
>
> On 20/10/2005, at 8:22 PM, Robert Squire wrote:
>
>> Hello:
>> Thank you to everyone who responded to my previous posting.
>> Now I've hit something new.  The code that follows is taken exactly  
>> from the tutorial at:
>>
>> http://www.modpython.org/live/current/doc-html/tut-pub.html
>>
>> I expected the function email to be called with 4 parameters, the  
>> req object and the three inputs from the form.  However this is the  
>> error output from mod_python:
>> ===========================
>>
>> Mod_python error: "PythonHandler mod_python.publisher"
>>
>> Traceback (most recent call last):
>>
>>  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line  
>> 299, in HandlerDispatch
>>    result = object(req)
>>
>>  File "/usr/lib/python2.4/site-packages/mod_python/publisher.py",  
>> line 136, in handler
>>    result = util.apply_fs_data(object, req.form, req=req)
>>
>>  File "/usr/lib/python2.4/site-packages/mod_python/util.py", line  
>> 361, in apply_fs_data
>>    return object(**args)
>>
>>
>> TypeError: email() takes exactly 4 non-keyword arguments (1 given)
>>
>> ===========================
>> I tried removing the req from the email parameter list and the  error 
>> reflected the change by stating that the function takes 3  arguments 
>> and zero were supplied.  Is this a problem brought about  by a change 
>> in mod_python since the tutorial was written or have I  made yet 
>> another boneheaded error?
>>
>>
>>
>> In the .htaccess file I have
>> ===========================
>> AddHandler mod_python .py
>> PythonHandler mod_python.publisher
>> PythonDebug On
>> ===========================
>>
>> The html form, form.html:
>> ===========================
>> <html>
>>    Please provide feedback below:
>> <p>
>> <form action="form.py/email" method="POST">
>>    Name:    <input type="text" name="name"><br>
>>    Email:   <input type="text" name="email"><br>
>>    Comment: <textarea name="comment" rows=4 cols=20></textarea><br>
>>    <input type="submit">
>>
>> </form>
>> </html>
>> ===========================
>>
>> And the python file, form.py:
>> ===========================
>> import smtplib
>>
>> WEBMASTER = "webmaster"   # webmaster e-mail
>> SMTP_SERVER = "smtp.comcast.net" # your SMTP server
>>
>> def email(req, name, email, comment):
>>
>>    # make sure the user provided all the parameters
>>    if not (name and email and comment):
>>        return "A required parameter is missing, \
>>               please go back and correct the error"
>>
>>    # create the message text
>>    msg = """\
>> From: %s
>> Subject: feedback
>> To: %s
>>
>> I have the following comment:
>>
>> %s
>>
>> Thank You,
>>
>> %s
>>
>> """ % (email, WEBMASTER, comment, name)
>>
>>    # send it out
>>    conn = smtplib.SMTP(SMTP_SERVER)
>>    conn.sendmail(email, [WEBMASTER], msg)
>>    conn.quit()
>>
>>    # provide feedback to the user
>>    s = """\
>> <html>
>>
>> Dear %s,<br>
>> Thank You for your kind comments, we
>> will get back to you shortly.
>>
>> </html>""" % name
>>
>>    return s
>> ===========================
>> _______________________________________________
>> Mod_python mailing list
>> Mod_python at modpython.org
>> http://mailman.modpython.org/mailman/listinfo/mod_python
>>
>
>
I can't explain this but I just changed my form action back to 
form.py/email and it's working now.
Looks exactly the same to me.  I have not restarted apache or modified 
any configuration since starting this process.
Very strange.

<html>
    Please provide feedback below:
<p>
<form action="form.py/email" method="POST">
    Name:    <input type="text" name="name"><br>
    Email:   <input type="text" name="email"><br>
    Comment: <textarea name="comment" rows=4 cols=20></textarea><br>
    <input type="submit">

</form>
</html>


More information about the Mod_python mailing list