This is easy to do in a view. For example:
from django.core.urlresolvers import reverse def Home(request): posts = Article.objects.filter(published=True).order_by('-publish') site = Site.objects.get_current() c = RequestContext(request, { 'posts': [{'post': post, 'url': request.build_absolute_uri(reverse('blog:detail', args=[post.slug]))} for post in posts] 'site': site, }) return render_to_response('templates/index.html', c)
Then, in your template, while you're looping with {% for postobj in posts %} you can access postobj.post and postobj.url.
If you want to do this in the template instead you can probably create your own template tag without too much trouble.