Skip to content

Instantly share code, notes, and snippets.

@lettertwo
Created April 27, 2011 22:35
Show Gist options
  • Save lettertwo/945391 to your computer and use it in GitHub Desktop.
Save lettertwo/945391 to your computer and use it in GitHub Desktop.
A template tag to create an absolute URI.
from django.template import Library
from django.templatetags.future import URLNode, url
register = Library()
class AbsoluteURLNode(URLNode):
def __init__(self, view_name, args, kwargs, asvar, legacy_view_name=True):
super(AbsoluteURLNode, self).__init__(view_name,
args,
kwargs,
None,
legacy_view_name)
self.abs_asvar = asvar
def render(self, context):
path = super(AbsoluteURLNode, self).render(context)
url = context['request'].build_absolute_uri(path)
if self.abs_asvar:
context[self.abs_asvar] = url
return ''
else:
return url
def absurl(parser, token):
node_instance = url(parser, token)
return AbsoluteURLNode(view_name=node_instance.view_name,
args=node_instance.args,
kwargs=node_instance.kwargs,
asvar=node_instance.asvar,
legacy_view_name=node_instance.legacy_view_name)
absurl = register.tag(absurl)
@lettertwo
Copy link
Author

Updated to accommodate 'asvar':

{% absurl 'path.to.view' as varname %}

@benwurth
Copy link

benwurth commented Nov 3, 2015

This is just what I needed! Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment