"I'm a PHP programmer and I want to check out this Django thing. What should I do?"
I've been seeing this kind of question pop up more and more, and I have a few answers.
First-hand experience as well as many conversations with developers online have led me to the same conclusion: the curious person behind such a question should be encouraged and assisted. (I'll call that person "Pat" for the rest of the post, for convenience and conscientious gender-neutrality.)
Every developer who has come to Python and Django from some other web app technology could write a detailed memoir, in the guise of advice, on how it all went. Many have. Pat should read one or two.
Then, while still working away in PHP-land, Pat should:
Learn mod_rewrite
If using PHP, Pat is very likely using Apache. Apache has an extremely handy module called mod_rewrite that allows Pat to slice up requested URLs and feed them to scripts in just the right way.
E.g. with a one-line rule Pat can tell Apache to turn a requested URL like http://example.com/people/paul/ into a call to people.php?name=paul behind the scenes. Users get clean, readable URLs, and Pat get to structure code as desired. These rules use regular expressions, but that's not the main reason I recommend mod_rewrite in this situation.
I recommend it because a good set of those rules can translate remarkably cleanly into a set of URL-handling rules for a Django site, known as a URLconf.
Separate business logic from presentation
PHP is at its root a templating language. A key to happy PHP development in my experience was keeping the templating part separate from the business logic part. E.g. a main script assembles all the data that the page will need, then includes a template that takes that data and displays it.
Django, like most other web frameworks, enforces this separation to great effect.
Use indentation
Like other languages with C-like syntax, PHP doesn't care how you indent your code. However, Python (famously) does. For curly-brace programming, I like the Whitesmiths style, which happens to be nearly identical to standard Python style when you eliminate the lines containing the braces.
Consistently-formatted code in any language is easier to work with than the alternative. By cleaning things up Pat can make things better for Pat right now (as well as for those who work with Pat's code), and be happy with Python tomorrow!
Standardize on a back-end admin tool
No matter what kind of sites Pat builds, it's likely to involve making back-end administration tools. They may be used for updating text content, or adding database entries, or changing settings used across the site.
Everybody gets tired of building these things over and over, and doing it really well isn't easy.
My advice to Pat is, as much as possible, to standardize on a back-end tool that can be used for all projects. This may be something home-grown, or a general-purpose open source tool like PHPMyAdmin and friends, or a customizable open source application built for this use. That way Pat spends more time on interesting application code, and Pat's clients get a more consistent experience.
One of Django's gems is its bundled admin application, designed to work with any Django application you create. It's pretty, capable, and highly configurable. Best of all, you never have to write or maintain it, because it's already there for you.
Learn Python
This one may seem obvious. However, I've seen a lot of people dive into Django with no previous Python knowledge and end up wanting more. It's not impossible to learn both at the same time, but it's not necessary or even efficient. Luckily, there are a lot of books on Python out there in addition to good free resources.
Python is good for more than Django, of course. It's an excellent general-purpose programming language that Pat will be happy to use for all sorts of things. Writing utility scripts and other little things in Python is a great way to get comfortable before building that killer social networking app you've been dreaming of.