On 15 Jun., 18:17, Joel Klabo <joelkl...@gmail.com> wrote:
> Thanks, good info. So the template tag can do the DB query and all
> that without going through a view function?
Yes, see the query in the example code I posted:
 profiles = UserProfile.objects.order_by('user__date_joined')
[:self.limit]

cheers
 Paul

>
> On Jun 15, 8:09 am, Paul <pkoe...@gmail.com> wrote:
>
>
>
> > On 15 Jun., 06:55, Joel Klabo <joelkl...@gmail.com> wrote:
>
> > > I am working on a simple site right now and the views are pretty easy.
> > > Usually just iterate a loop of objects. But, I am trying to figure out
> > > how a website with all different kinds of data, including a sign in
> > > form, is setup in django. Is that all in one big view? Or, is there
> > > some way to combine them?
>
> > > Any insight would be helpful, thank you.
>
> > Hi Joel,
>
> > very good question, I take it you want to know how "composition" is
> > done at the "page level" without dragging all the logic into one view.
> > In django you can generate recurring elements with template tags, for
> > adding variables to the request or generate markup directly.
>
> > say you want a list of users that joined your site recently:
>
> > class RecentUsersNode(template.Node):
> >     def __init__(self, limit):
> >         try: self.limit = int(limit)
> >         except ValueError: self.limit = 10
>
> >     def render(self, context):
> >         profiles = UserProfile.objects.order_by('user__date_joined')
> > [:self.limit]
> >         context['recent_users'] = profiles
> >         return ''
>
> > @register.tag
> > def recent_users(parser, token):
> >     args = token.split_contents()
> >     if len(args) <= 1:
> >         return RecentUsersNode(10)
>
> >     num = args[1]
> >     if(num[0] == num[-1] and num[0] in ('"', "'")):
> >         num = num[1:-1] # strip quotes
> >     return RecentUsersNode(num)
>
> > {% recent_users %} will add a list of UserProfile objects to your
> > request and you can use it like:
>
> > {% for profile in recent_users %}
> >   <img src="{{ profile.photo.url }}" alt="{{ profile.desc }}" />
> > {% endfor %}
>
> > In the old days of web 1.0 there was a natural 1:1 mapping from the
> > page to a script/function which generates the content. With ajax it's
> > becoming more like a desktop app where you have many parts/widgets
> > with callbacks or events. If you want the page to display without JS,
> > you still have to generate the page with one request though...
>
> > cheers
> >  Paul

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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