복붙노트

[PYTHON] Jinja로 JS로 렌더링하면 문자열이 아닌 숫자가 잘못 생성됩니다.

PYTHON

Jinja로 JS로 렌더링하면 문자열이 아닌 숫자가 잘못 생성됩니다.

템플릿의 일부 JavaScript에 문자열을 전달하고 싶습니다. 그러나 JavaScript가 실행될 때 문자열은 (잘못된) 숫자로 해석됩니다. JavaScript 변수에 문자열을 전달하려면 어떻게해야합니까?

@app.route('/loadNext')
def loadNext():
    return render_template('next.html', value='1.1.1.1')
$("#loadtable").ready(
    function(){
     var tmp = {{ value }};
     alert(tmp);       
});

해결법

  1. ==============================

    1.문제는

    문제는

    {{ '1.1.1.1' }}
    

    다음과 같이 렌더링하다

    1.1.1.1
    

    따옴표는 포함되지 않습니다. JavaScript는 이것을 숫자로 분석하려고 시도 할 수 없습니다. 다행히도 Flask에는 Jinja 필터가 포함되어 있습니다.

    var tmp = {{ value|tojson }};
    

    tojson은 문자열 주위에 따옴표를 포함하고 숫자 값을 생략합니다. Jinja가 렌더링 할 때 필터링 된 값은 올바른 유형의 유효한 JavaScript입니다.

  2. from https://stackoverflow.com/questions/33344773/rendering-to-js-with-jinja-produces-invalid-number-rather-than-string by cc-by-sa and MIT license