Server programming

Bruno Desthuilliers bdesth.quelquechose at
Mon Feb 23 15:02:22 EST 2009

koranthala a écrit :
> Hi,
>       Is server programming in Python procedure oriented or object
> oriented?

It's how you want it to be.

>       I have this question because lately I am asked to make a medium
> complex web program (extremely database oriented) using Django. When I
> used to do application programs earlier (in Python itself),  the whole
> thing being object oriented came out easily in programming. So, I was
> able to use different patterns etc for programming and the whole thing
> was - quite fun to design and create.
>       But when I program in Django, since I just have to work on user
> responses - everything else being taken care of by Django - only, the
> complete coding has become procedure oriented. It is not kludgy or
> anything, but it doesnt have the nice feeling that we get when we code
> a proper object oriented program.

So you may want to learn to enjoy the nice feeling we get when we code a 
proper procedural program - or a proper functional one FWIW !-)

There's nothing inherently wrong with procedural programming. Nor with a 
mix of procedural, OO and functional code - which is usually the case in 
Python. It's just a matter of using the right tool for the problem to 

>       Is my coding in error here?

Don't know - I don't have access to your code. But my experience with 
Django is that I tend to have quite a lot of code in models and 
templatetags, and much less in the views themselves. So I wouldn't say 
that "Django takes care of everything else". If you really ends up 
writing pages upon pages of repeting procedural code in your views and 
nothing in the other parts of the app, then yes, there might be 
something wrong - probably a case of AnemicDomainModel, and possibly a 
lack of knowledge of the whole framework. One of the reasons views are 
usually implemented as functions is that in most cases, you shouldn't 
have a need for more. FWIW, you sometimes don't even need to write a 
specific view - Django's GenericViews can handle quite a lot of cases

Note also that Django doesn't _require_ that you use functions as view 
handlers - any callable object will do. But given how the HTTP protocol 
works and how Django is designed, there's more often than not just no 
*need* for a custom callable object.

And finally, as Steve already mentioned, OO is first about objects, and 
that's what you're dealing with in your views - request objects, session 
objects, model objects etc...

> This is infact my first web program,
> so it might be the reason. What does other people find? Does web
> server programming using web frameworks (Django, TurboGears etc) make
> it procedure oriented?

Not necessarily, no. Some frameworks requires your request handlers to 
be methods of classes FWIW, and nothing in Django prevents you from 
doing so if you want.

> If I am in the wrong, it might be due to a
> wrong design or mindset, and I would like to change it.

More information about the Python-list mailing list