They try to push for a flat rate, but I won't anymore because I have been burned many times by this.
It's not as easy a road as I thought it would be. My flat rate projects always ended up taking longer because of client demands and so my hourly actual pay went way down.
I got good with Django by building things and doing a lot of googling whenever I ran into problems or needed to do something new.
I had a basic computer programming background before this though.
When you must estimate a timeframe, make a honest estimate, and multiply it by 4.
I'm just a network security guy with aspirations of becoming a developer some day, but from my observation that seems to be the accepted theory with freelancers on HN.
You can compensate for this if you have the marketing and client management skills to get an aspirational rate, but if you don't, you need to be so good that you not only can see your way through a project in a conversation but see the potential traps and talk through them with the client confidently.
I believe that you can get this experience quickly -- good luck!
Honestly if you're doing contracting then having a well defined contract should make this irrelevant. The burden of figuring out how long is on you, not them.