Tuesday, May 31, 2011

Re: Learning Django: Approach / Advice / Resources

On May 30, 9:30 pm, Robin <robin.sa...@gmail.com> wrote:
> A little while ago, I was approached about building a basic web site
> for a small store.  The requirements were pretty typical and read like
> a menu of web development tutorials.  This was to be a data driven
> site that any decent web developer could build.  I, however, am not a
> web developer, decent or otherwise.  So, I turned the assignment down
> and decided it's time I looked into learning something about web
> development.
>
> I looked at everything from ASP to Java to PHP and even the likes of
> Drupal and Joomla.  I liked the ideas and patterns behind Django as a
> framework ( MVC = :) ) and Python as a language.  The combination
> seemed like perfect middle ground to me.  Things were going well as I
> worked through the tutorial and explored the documentation to dig
> deeper into core Django topics.  Where am I today?
>
> I'm struggling a bit with Django, to be honest.  Or maybe I'm
> struggling with Python, I'm not completely certain which.  Maybe it's
> because I'm trying to learn web development and Python at the same
> time.  I'm certainly no genius, but I'm not a bonehead either...at
> least my mother doesn't think so. ;)
>
> The individual technical ideas are presented well and I can always
> find enough information to learn more.  But Django as a whole feels
> less cohesive.  Or maybe it's that Django sometimes feels...TOO
> flexible?  There are certainly a lot of choices in terms of how much
> Django to use and how much to roll yourself.  Guidance seems to be
> offered on a per-module basis.  Maybe that's just how it is and I'm
> looking for structure where there is none available.
>
> I'm not sure what to override...when to call the super classes
> corresponding method.  Do I have to concern myself with the test
> cookie idea?  Should I name my URLs?  Is mixing positional and keyword
> arguments OK?  Are generic views the best way, or just the quickest
> way?
>
> I guess it boils down to a concern over making poor choices and
> learning bad habits.  If I'm going to spend any amount of time with
> this web development hing, I want to do it right.  I'm also fighting
> my urge to build everything myself.  Sure it would be plenty flexible,
> but it would also take longer and wouldn't leverage the great work
> done by all of Django's contributors.
>
> So, what am I rattling on about then?
>
> Judging by some of the posts I've read since joining the group, I'm
> sure there are a bunch of folks who would appreciate some guidance
> and / or best practices from the more experienced Django developers.
> I understand everyone learns and progresses differently, but I would
> really appreciate your take on things.
>
> How much do you use built in Django functionality?  Are there
> components you tend to avoid?  Do you use Django only for certain
> types of projects?  Do you struggle with Python or Django?  Is the
> source code a good place to spend some time?  Is your authentication
> system home-grown?  Have you been bitten in the behind by using too
> much Django?  Not enough?
>
> I realize this is a lot to ask, but I think it's a good thing that we
> help newer developers do things the right way.  I certainyl want to
> become a contributing member of this group, but not until I won't give
> bad advice and flat out wrong answers. ;)
>
> I've gone through a good chunk of the Django Book online.  Is this a
> good resource or do you have other recommendations?  There aren't all
> that many books on Django, but there are a few.  Do any do a better
> job than the others of guiding you to the best way to build web
> sites / apps?  I sure wish there was a book that kept pace with the
> changes and the miost recent version.  Is the fact that there isn't
> much available a bad sign?
>
> Just jump in and adjust as I learn my lessons?
>
> Regards,
>
> Robin


Hi Robin

Not sure I can address all your issues, so I will just pick up on a
few...

One thing from the start -> " If I'm going to spend any amount of time
with this web development thing, I want to do it right." You will -
eventually. Its often really hard to do it right first time because
you do not have enough experience to know if you're making a mistake!
Getting going, doing stuff and maybe putting out in public the parts
you are most concerned/unsure about is the best way to get the
experience...

"struggling with Python"

I cannot say that its essential to know Python in depth before
starting web programming, but I would say it would be a huge help.

Its not clear what programming experience you have. If none, then its
worth starting with the basics of programming. If you have some, then
try and find a comparison between the language you used and Python
(pref. written by a Python person).

Some useful "getting started" tutorials:
* http://docs.activestate.com/activepython/2.5/easytut/index.html
* http://www.gidnetwork.com/b-26.html

After reading and trying out what someone else has done, try and build
stand-alone stuff in Python. A simple use case is accessing and
processing Excel spreadsheets using xlwt and xlrd. If you ever have
to do any data processing for third-parties, you're almost bound to
use/re-use what you have done here. Otherwise think of a common need
from the area you work in.

"struggling with Django"

Django is meant to be comprehensive. That's good if you want to be
able to do anything, but bad if you're just getting started. If I
showed my old self from 2 years ago the code that I have written
today, I'd be overwhelmed, no doubt. Learning programming is
incremental and experiential. You learn code by writing; and improve
code by writing more. Remember (and this is easy to forget!!) that
the entire source code of Django is open to you... take some time and
read some of it - Python is designed to be a readable language. If
its too overwhelming, then try and look at the code of some of the
apps that are out there (and there are lots!). You'll see an entire
"module" and start to get some idea of how it all hangs together.
Then try it yourself; maybe start with something already there and
make changes to it until it breaks - try and figure out why - fix it -
and keep going. Use the same basic concepts to try and build
something new-ish yourself from scratch. As you go along and get
really stuck, post questions to the list (and please check first in
the archives - many people experience similar problems).

Q&A

Q: How much do you use built in Django functionality?
A: All the time!

Q: Are there components you tend to avoid?
A: None that come to mind; but I just use the ones I really need
("learn as you go").

Q: Do you use Django only for certain types of projects?
A: Its my primary web development framework; in my situation there is
no need to use multiple ones (and probably not a good idea when you're
just starting)

Q: Do you struggle with Python or Django?
A: Often - but that is when I *know* that I am learning

Q: Is the source code a good place to spend some time?
A: See above.

Q: Is your authentication system home-grown?
A: Nope; using 'auth' works for me

Q: Have you been bitten in the behind by using too much Django?
A: Not so far...

Q: I sure wish there was a book that kept pace with the changes and
the most recent version. Is the fact that there isn't much available
a bad sign?
A: Depends if you think the publishing industry is keeping up with the
web programming industry ;) I think you'll have to get one of the
committers to answer that; but to be honest I would rather they fixed
bugs and added features than wrote books (my 2c). In the meantime,
the online docs are readable, comprehensive and up-to-date. Django
has one of the most well-documented codebase of any open source
project.


Hope some of this helps - welcome to the community!

Derek

P.S. "Do I have to concern myself with the test cookie idea? I have
no idea what this is... please enlighten me!

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment