Oddly enough Django was actually originally written as an easy abstraction layer around mod_python - partly so we didn't have to work with the low-leveal mod_python constructs, but mostly because back in 2003 we weren't 100% sure mod_python would work for us, and having an abstraction layer would make it easy to move to something else if we needed to (this was before WSGI as well).