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. If
you have a lot of persons in that query set, you will want to use some
kind of pagination anyway.

-RD


--~--~---------~--~----~------------~-------~--~----~
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