JavaScript를 사용하여 Jinja 템플릿에서 렌더링된 JSON 데이터를 반복하려고 하면, 브라우저에서 "SyntaxError: 예기치 않은 토큰 '&'" 오류가 발생합니다. 렌더링된 데이터에 대해 JSON.parse를 호출할 때 문제가 발생합니다.
Flask의 Jinja 환경은 보안을 완화하기 위해 템플릿에서 렌더링된 데이터에 자동 HTML 이스케이프를 적용합니다. 위험. 그러나 이 이스케이프는 데이터를 JSON으로 해석하는 데 방해가 될 수 있습니다.
Flask는 이 문제를 해결하기 위해 tojson 필터를 제공합니다. Python 객체를 JSON으로 변환하고 렌더링하기에 안전한 것으로 표시합니다.
return render_template('tree.html', tree=tree)
템플릿에서:
var tree = {{ tree|tojson }};
데이터가 다음과 같은 경우 JavaScript에서 사용하도록 의도되지 않았으므로 tojson 필터는 필요하지 않습니다. Python 데이터를 직접 전달하고 필요에 따라 템플릿에서 활용하는 것이 좋습니다.
return render_template('tree.html', tree=tree)
템플릿에서:
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
이스케이프가 필요하지 않은 경우 이미 문자열 형식의 JSON 데이터가 있는 경우 안전 필터를 사용하여 이스케이프를 비활성화하거나 마크업.
안전한 필터 사용:
return render_template('tree.html', tree=Markup(json.dumps(tree)))
템플릿에서:
var tree = {{ tree }};
마크업 사용:
return render_template('tree.html', tree=json.dumps(tree))
에서는 템플릿:
var tree = {{ tree|safe }};
위 내용은 Jinja 템플릿에서 JSON 데이터를 렌더링할 때 JSON.parse가 'SyntaxError: 예기치 않은 토큰 '&''과 함께 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!