You could group all cached snippets of a template, together by giving them a group cache key bound to the template. When you want to invalidate all of contents related to the template, you just clear the group key of the template:
>>> from django.core.cache import cache
>>> template_name = 'foo.html'
>>> cache.set(template_name, 1)
>>> make_group_key = lambda: '{name}-{version}'.format(
name=template_name, version=cache.get(template_name))
>>> cache.set(make_group_key(), 'page content...')
>>> cache.get(make_group_key())
'page content...'
>>> cache.incr(template_name)
>>> cache.get(make_group_key()) is None
True
For your code, you could write a template tag which propagates the group key to context, like
{% get_template_key template as tmpl_key %}
{% cache 7200 template urlname order page tmpl_key %}
or you could generate the key in the view or somewhere else.
The delete part is then as simple as cache.incr(template_name)
(You may need to deal w/ the exception that template_name no longer exists)
This method add an extra cache round-trip, but normally its fast enough.