Django Template "include_raw" tag

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from django import template
from django.template.loaders.app_directories import load_template_source
 
register = template.Library()
 
def do_include_raw(parser, token):
    """ 
    Performs a template include without parsing the context, just dumps the template in.
    """
    bits = token.split_contents()
    if len(bits) != 2:
        raise TemplateSyntaxError, "%r tag takes one argument: the name of the template to be included" % bits[0]
 
    template_name = bits[1]
    if template_name[0] in ('"', "'") and template_name[-1] == template_name[0]:
        template_name = template_name[1:-1]
 
    source, path = load_template_source(template_name)
 
    return template.TextNode(source)
register.tag("include_raw", do_include_raw)

More like this

  1. Client-side django template with jQuery by ksjun 4 years, 10 months ago
  2. RequiredNullBooleanField by wwu.housing 4 years, 1 month ago
  3. "Save and Continue" keyboard command for admin, with autoscroll by jcushman 3 years, 4 months ago
  4. Client-side Django-style date & time string formatting by robbie 6 years, 2 months ago
  5. generateChart() for creating a Google Chart API pie chart from JavaScript by simon 4 years, 3 months ago

Comments

joaodubas (on December 13, 2010):

It would be cool if the load_template_source was imported also from django.template.loaders.filesystem. Probably the line 18 could be changed to something like this:

from django.template.loaders import filesystem, app_directories
...
try:
    source, path = filesystem.load_template_source(template_name)
except filesystem.TemplateDoesNotExist:
    try:
        source, path = app_directories.load_template_source(template_name)
    except ad.TemplateDoesNotExist:
        raise app_directories.TemplateDoesNotExist, "The template %s, does not exist." % (template_name, )

Besides that, a great work!!!

#

macavity (on March 27, 2013):

This no longer works as load_template_source has been deprecated. Instead, use the Loader class:

from django.template.loaders.app_directories import Loader
...
# Replaces: source, path = load_template_source(template_name)
source, path = Loader().load_template_source(template_name)

Replace app_directories with filesystem as required according to https://docs.djangoproject.com/en/dev/ref/templates/api/#loader-types - or use a combination approach as joaodubas suggests.

#

(Forgotten your password?)