I've searched around for a while but I can't find a concise explanation of how to do what I want.
I have a fairly complex program which I'd like to make a simple web interface for.
Ideally there'll be a couple of text fields, "foo" and "bar" on a webpage.
When the user clicks submit, a python script "src/script.py" is run, which has access to the contents of these fields somehow.
I have apache2 and mod_python.
Here is how it works:
user requestes a web page (a URL like http://127.0.0.1/start.html)
you have to serve the page to the user (either via a standalone webserver like apache or via some python lib like http.server, BaseHTTPServer, flask, cherrypy, ...)
user fills some values in some html form on your page (learn about html forms) when he hits submit another url is requested like http://127.0.0.1/myfunction.py?foo=1&bar=2
you have to handle the request to that url and extract the parameters from the url, for example via cgi, mod_py and apache or python frameworks like flask, cherrypy, etc.. and than you would execute your code using the parameters and generate a resulting html page and serve it via those tools
If you want to keep it really simple, learn howto use flask and html forms.
You'll probably want to look into a web framework such as django or webOb
If it is a "fairly complex program" you may want to use a small framework that takes care of grouping the parts in a "standard", i.e. supported and documented, manner. I would look into lightweight Python Web frameworks as Flask and WebApp2. Lightweight in terms of both performance and learning curve.
Here you get a full overview of Python web frameworks.