I use Django (GeoDjango actually) at my full-time job, and love it. My progression was PHP -> Python -> TurboGears -> Pylons -> Django. I can say with confidence that it is the best of them all. Yes, many choices have been made for you, but they have been made in an elegant, Pythonic way, and you retain the ability to get under the hood to a healthy extent.
The real reason I switched was because I began working at a newspaper, and Django and journalism are married/fused inextricably. Choosing Pylons over Django in a news endeavor would be rather ... odd.
That aside, I said I progressed from Pylons to Django because I would choose Django if I had to do the Pylons project over again. Why? Because although I rejected (rebelled against?) it at the time, being 'forced' into an ORM for data entities would have been a really good thing. Since Pylons "lets" you shirk an ORM, I did ... but the result feels more like PHP than Python. Turns out Django's hand-holding is, in many cases, good because the answer they provide is the smart thing to do. And doesn't that sound like a description of Python itself?
Would I choose an ORM-ified Pylons experience over Django? Probably not. Django routing seems better, there's Django-enhanced unit testing, and I even prefer the way Django forces you to keep Python out of your templates in favor of "template tags" and "filters".
Perhaps most importantly, Django has nearly-impeccable documentation, and a thriving community.
Coming from a Perl background, you would probably be more comfortable with PHP. Definitely checkout the KohanaPHP framework (www.kohanaphp.com) for a solid, well-designed PHP5 MVC framework, With a good framework, you can write very readable and maintainable code.
I come from a Perl background and I'm definitely not more comfortable with PHP, despite having used it quite a bit over the past year or so for our company website, forums, store, etc. Python at least has first-class functions, and I had no problem using it for a few years when I was working in a Python shop (and I still miss IPython which rocks so hard...Devel::REPL is not quite an acceptable substitute). But, I find Ruby the most palatable of the currently trendy languages (though I do almost all of my work in Perl)...I was able to sit down and write working Ruby code with fewer bugs than I can with Perl, and I've been using Perl for 10 years. Python, after three years, I found my bug count was roughly the same as I write in Perl.
I'd have to agree with you. I have a few years of Perl experience and started a bit of PHP to help a buddy out and learn. Writing something that is trivial in Perl gets quite complex in PHP. It's definitely doable, just not as nice as I'd want it to be.
Not sure if first class functions matter to you, but last time I checked, PHP didn't have them, which is a major annoyance for me.
I also find PHP to be quite the cognitive overhead. The libraries seem to lack consistent naming conventions and since it's all one global namespace, there are a LOT of names to remember. Coding in PHP often feels like repeatedly looking up library functions and 'assembling' them, rather than 'writing' something.
Any thoughts on PHP frameworks?
On Python, I've heard that TurboGears is a pretty good framework as well.
I remember reading somewhere that you don't run Django, it runs you. Any fiction in that?