python - Jinja2 not rendering quotes or amp in javascript/html; safe filter not solving -


first post; try keep short , sweet.

i trying render edit form detects , populates input fields if values exist fields. i'm using flask jinja2 , when use {{ }} print operator, fields have double quotes , ampersands rendered " , & respectively.

the catch: happens when print operator being used in javascript function. i've looked on solutions, , seemed jinja2 safe filter trick, when appended print value, invalidated of javascript.

below code sample:

function test() {     var namefield=document.getelementbyid("thing");     namefield.value="{{ values[0] }}"; } 

'values' python list.

please let me know if can add clarify issue.

the safe filter prevent html escaping , provide solution problem.

however error in javascript because have double-quotes inside string limited double-quotes!

suppose value of values[0] string: double-quote " , ampersand, get:

function test() {     var namefield=document.getelementbyid("thing");     namefield.value="double-quote " , ampersand"; //trailing , ampersand causing error } 

you can tempted fix problem replacing "{{ values[0] }}" single-quote wrapped string '{{ values[0] }}'. if string contains single quotes?

you might think need escape special characters, need use java script escaping (double-quotes become %22) not python escaping (double-quotes become \").

imho, core of problem lies in fact using jinja print code (not values or mark-up). when need dynamic behavior, why change javascript code when can have static code provides dynamic behavior client-side?

if values[0] in dom in html file (in id of html element, or in other attribute or in html of option of select input), let javascript go , fetch it. if not in dom, put in hidden element appropriate id e.g.

`<div style="diplay:none;" id="value0">{{ value[0] }}</div>`   

and retrieve when needed.

this has advantage of decoupling javascript code server-side page generation , jinja: javascript still work under single condition correct html structure provided. able move javascript .js file , use other projects, projects not using flask/jinja2.


Comments

Popular posts from this blog

plot - Remove Objects from Legend When You Have Also Used Fit, Matlab -

java - Why does my date parsing return a weird date? -

Need help in packaging app using TideSDK on Windows -