Łatwo to zrobić w widoku:
from django.core.urlresolvers import reverse
url = request.build_absolute_uri(reverse('blog:detail', args=[blog.slug]))
Jeśli trzeba to zrobić w szablonie, prawdopodobnie możesz stworzyć własny tag szablonu bez większych problemów.
Edit
Zakładając, że chcesz to zrobić w widoku Home
, można zrobić coś takiego:
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)
Następnie w szablonie gdy jesteś zapętlenie z {% for postobj in posts %}
możesz dostęp postobj.post
i postobj.url
.
możliwy duplikat [django pełny adres URL Get \ _absolute \ _url] (http://stackoverflow.com/questions/3994060/django- pełny adres URL-w-get-absolute-url) – karthikr
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.build_absolute_uri To może ci pomóc. –