On Fri, Jul 03, 2009 at 09:04:37AM -0700, Rajesh D wrote:
> 
> On Jul 3, 9:17 am, Nikola Pavlović <n...@datasnok.org> wrote:
> > Hello people,
> >
> > I'm writing my first Django application and would like to know what is
> > considered more efficient: getting values of models' attributes in views
> > or directly in templates?
> >
> > More precicely, say we have a Person model with name and id attributes,
> > and these need to be shown on a page.
> >
> > Is it better for a view to "prepare" a context like this:
> >
> > # views.py
> > # ...
> >
> >     persons = []
> >
> >     for person in Person.objects.all():
> >         persons.append({'id': person.id, 'name': person.name})
> >
> >     return render_to_response('some_template.html', persons)
> >
> > # some_template.html
> >
> > {% for p in persons %}
> >     Id: {{ p.id }}; Name: {{ p.name }}
> > {% endfor %}
> >
> > or just pass a QuerySet in a context like this:
> > # views.py
> > # ...
> >
> >     persons = Person.objects.all()
> >     return render_to_response('some_template.html', persons)
> >
> > and then let the template access attribute values directly?
> >
> > Does it make a difference in terms of performance?
> 
> The second method avoids an extra loop and also keeps your code leaner
> (less code == lesser chances of bugs). It's also the more commonly
> used method. And if you are displaying just a handful of persons per
> page, the performance differences should be negligible either way. 

Great, that was just what I wanted to know -- a 'Django best practices'
kind of question.

After a couple of hours of playing with this the other day, I came to
the same ("obvious") conclusion (much simpler code), but I was just 
concerned if there was some significant overhead to accesing attributes 
in the rendering phase.


Thanks!


-- 
Two can Live as Cheaply as One for Half as Long.
                -- Howard Kandel


--~--~---------~--~----~------------~-------~--~----~
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+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to