[Fixed]-How to disable HTML encoding when using Context in django

25👍

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.

9👍

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.

Leave a comment