Skip to content Skip to sidebar Skip to footer

How To Disable Html Encoding When Using Context In Django

In my django application I am using a template to construct email body, one of the parameters is url, note there are two parametes separated by ampersand in the url. t = loader.get

Solution 1:

To turn it off for a single variable, use mark_safe:

from django.utils.safestring import mark_safe

t = loader.get_template("sometemplate")
c = Context({
   'foo': 'bar',
   'url': mark_safe('http://127.0.0.1/test?a=1&b=2'),
})
print t.render(c)

Alternatively, to totally turn autoescaping off from your Python code, use the autoescape argument when initialising a Context:

c = Context({
   'foo': 'bar',
   'url': 'http://127.0.0.1/test?a=1&b=2',
}, autoescape=False)

The How to turn [Automatic HTML escaping] off section of the documentation covers some of the in-template options if you'd rather do it there.

Solution 2:

Or just use the "safe" filter in your template.

Also, I cannot stress enough how important it is to be familiar with Django's documentation; many common questions like this have easy-to-find answers and explanations (like this one), and reading through the docs and getting a feel for how everything works will drastically decrease the amount of time you need to spend ask "why did it do that" and increase the amount of time you spend building things that work the way you want.

Post a Comment for "How To Disable Html Encoding When Using Context In Django"