Whether you will need to battle with CGI, depends on your use case.
Python frameworks. like Flask, tend to offer their own litte web servers out-of-the-box. However, such servers are mostly meant for testing during the development phase. Integration into full blown web browsers usually is via CGI or FastCGI, and can offer advanced customization and scale up to huge loads.
But, depending on your target audience, a good "included" web server, like the one in web2py will do for you. For learning purposes, or in a closed network behind a firewall, such solutions are perfectly ok and you aviod the tech CGI stuff. Once your app is finished or the "included" web server will not suit your needs anymore, you can still deploy your app behind a "real" web server.
If you really like it the tough way, you may also consider to write your own web server from scratch ;)