|
Jorey Bump
list+mod_python at joreybump.com
Thu Apr 15 13:50:16 EST 2004
Eustaquio Rangel de Oliveira Jr. wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jorey Bump wrote:
>
> |Assuming you're using publisher and your DocumentRoot is /var/www/html,
> |you can do this:
>
> | <Directory /var/www/html>
> | AddHandler python-program .py
> | PythonHandler mod_python.publisher
> | PythonDebug On
> | </Directory>
>
> |That would allow you to use .py files almost anywhere. Specify a
> |subdirectory if you want to limit it. There are no conflicts with
> |mod_php.
>
> Hey, thanks for your answer. I did this, and when I try to run test.py:
>
> from mod_python import apache
>
> def handler(req):
> req.content_type = "text/plain"
> req.send_http_header()
> req.write("Hello, world!<br>")
> r = range(0,10)
> for n in r:
> req.write(str(n)+"<br>")
> return apache.OK
>
> I got a:
>
> Not Found
> The requested URL /test.py was not found on this server.
> Apache/1.3.29 Server at taq.localhost Port 80
It's much simpler than that. Try this in test.py:
def hello(req):
x = "Hello, world!"
return x
Then go to:
http://localhost/test.py/hello
You'll see the text, and the server will send it as
Content-Type: text/plain; charset=ISO-8859-1
Now add this function:
def hellohtml(req):
x = """<html>
<head>
<title>Hello, World!</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
"""
return x
Go to:
http://localhost/test.py/hellohtml
It's now HTML, with the appropriate header:
Content-Type: text/html; charset=ISO-8859-1
Finally, add a function that takes an argument from the URL:
def hellohtmlarg(req, arg):
x = """<html>
<head>
<title>%s</title>
</head>
<body>
<h1>%s</h1>
</body>
</html>
""" % (arg, arg)
return x
Go to:
http://localhost/test.py/hellohtmlarg?arg=Hello,%20World!
You can see that you generally don't need to worry about sending headers
or importing the apache module with mod_python.publisher. Just construct
your page as a string and return it. Publisher does the rest for you.
If you need to set special headers, you can do it like this:
req.headers_out['Pragma'] = 'no-cache'
req.headers_out['Cache-Control'] = 'no-cache'
req.headers_out['Expires'] = '-1'
But I prefer to do it in httpd.conf or .htaccess, myself:
Header set Pragma "no-cache"
Header set Cache-Control "no-cache"
Header set Expires "-1"
It's a matter of taste.
|