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_template('sometemplate') c = Context({ 'foo': 'bar', 'url': 'http://127.0.0.1/test?a=1&b=2', }) print t.render(c)
After rendering it produces: http://127.0.0.1/test?a=1&b=2
Note the ampersand is HTML encoded as ‘&’. One way around the problem is to pass each parameter separately to my template and construct the url in the template, however I’d like to avoid doing that.
Is there a way to disable HTML encoding of context parameters or at the very least avoid encoding of ampersands?
To turn it off for a single variable, use
mark_safe:Alternatively, to totally turn autoescaping off from your Python code, use the
autoescapeargument when initialising aContext: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.