diff --git a/MANIFEST.in b/MANIFEST.in
index 826968b..0b77997 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,4 @@
include README.rst
include package.json
+recursive-include armstrong/esi/templates *.html
prune build/*
diff --git a/armstrong/esi/templates/esi/esi_tag.html b/armstrong/esi/templates/esi/esi_tag.html
new file mode 100644
index 0000000..5410516
--- /dev/null
+++ b/armstrong/esi/templates/esi/esi_tag.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/armstrong/esi/templatetags/esi.py b/armstrong/esi/templatetags/esi.py
index f343423..841d6a9 100644
--- a/armstrong/esi/templatetags/esi.py
+++ b/armstrong/esi/templatetags/esi.py
@@ -1,10 +1,11 @@
+import copy
from django import template
from django.template import defaulttags
from django.template.defaulttags import URLNode
+from django.template.loader import render_to_string
register = template.Library()
-esi_tmpl = ''
class EsiTemplateTagError(Exception):
pass
@@ -25,14 +26,22 @@ def render(self, context):
except KeyError:
raise EsiTemplateTagError('The esi templatetag requires the esi context processor, but it isn\'t present.')
- url = self.raw_url or super(EsiNode, self).render(context)
+ if self.raw_url:
+ url = self.raw_url
+ else:
+ url = super(EsiNode, self).render(context)
+ if self.asvar:
+ url = context[self.asvar]
+
+ render_context = copy.copy(context)
+ render_context['esi_url'] = url
+ result = render_to_string('esi/esi_tag.html', render_context)
if self.asvar:
- url = context[self.asvar]
- context[self.asvar] = esi_tmpl % url
+ context[self.asvar] = result
return ''
- else:
- return esi_tmpl % url
+
+ return result
@register.tag
def esi(parser, token):