Tuesday, 15 April 2014

How to get_absolute_url with domain in Django template? -



How to get_absolute_url with domain in Django template? -

so struggling bit, logically seems simple due limited understanding of django not sure , how formulate solution.

basically have blog app set , shows complete(all content including disqus discussion) latest post on home page. post has farther link posts own page well. have set disqus , need key info utilize disqus_url , disqus_identifier. have set model follows method get_absolute_url follows:

def get_absolute_url(self): homecoming reverse('blog.views.renderblog',args=[str(self.id),str(self.slug)])

my view set follows:

def renderblog(request,postid=1,slug=none): template = 'blog_home.html' if(postid == 1 , slug == none): post = post.objects.latest('date_created') else: post = post.objects.get(slug=slug, id=postid) info = { 'post':post, } homecoming render(request, template, data)

as can see view set handle both url's follows:

url(r'^$', 'renderblog', name='bloghome'), url(r'^post/(?p<postid>\d{1,4})/(?p<slug>[\w-]+)/$', 'renderblog', name='blogpostpage'),

in template setting disqus_identifier = '{{ post.get_absolute_url }}' , hardcoding domain portion in meantime disqus_url = 'http://127.0.0.1{{ post.get_absolute_url }}';.. same goes comment count <a href="" data-disqus-identifier.

i dont doing things in hackish manner, best method me total absolute url. have looked @ request.get_absolute_uri not sure on how utilize want.

thanks

the way configure context_processor:

from django.contrib.sites.models import site def base_context_processor(request): homecoming { 'base_url': "http://%s" % site.objects.get_current().domain } # or if don't want utilize 'sites' app homecoming { 'base_url': request.build_absolute_uri("/").rstrip("/") }

in settings.py:

template_context_processors = ( ... 'path.to.base_context_processor', ... )

(in newer versions of django, modify context_processors under templates, options instead.)

then in templates:

<a href="{{ base_url }}{{ obj.get_absolute_url }}">object name</a>

another solution utilize request.build_absolute_uri(location), have create template tag takes request object , location or object has get_absolute_uri method. able utilize templates that: {% get_full_uri request=request obj=post %}. here documentation on how write custom tags.

django

No comments:

Post a Comment