저는 플라스크 앱을 만들고 있는데, 특정 매개 변수를 추적하기 위해 프론트 엔드의 자바 스크립트에 파이썬 백엔드에서 생성 된 변수를 전달해야합니다. 그러나 이상한 인코딩 문제가 발생했습니다. 다음은 python 백엔드, 렌더링 된 Jinja2 템플릿 프런트 엔드 및 Chrome 콘솔에 표시되는 오류를 요약 한 예입니다.flask : javascript에 변수를 전달하는 중 오류가 발생했습니다.
app.py :
@app.route('/')
def send_name():
name = ["Michael"]
return render_template('index.html', name=name)
index.html을 : 나는 콘솔을 열 때
<html>
<script>
console.log('{{ name }}')
</script>
</html>
, 나는 다음을 참조 :
['Michael']
앰퍼샌드 # 39 인 ASCII 아포 스트로크를위한 문자 인코딩. 내가 (console.log({{ name }})
모양) 위의 CONSOLE.LOG 문에서 아포스트로피 (작은 따옴표)를 생략하면 나는 다음과 같은 오류 얻을 :
Uncaught SyntaxError: Unexpected token &
을 나는 <script>
태그 외부의 아무 곳이나 변수를 인쇄 할 때 이상한 일이되어 그 잘 작동합니다.
어떤 문제인지, 어떻게 해결할 수 있습니까?
'name'은 사전이 아닌 목록입니다. 왜 우리는 json 필터를 사용할 수 있습니까? 이것은'tojson','safe' 또는 둘 모두를 사용하든 상관없이 감사합니다! 감사합니다! 하나 또는 둘 다를 사용하는 것이 더 낫습니까? jinja2 문서를 기반으로'safe'가'tojson'에 내장되어 있습니다. –
예 ...이 트릭을 배운 후에 새로운 추가 기능이 될 수 있다고 생각합니다.) 기술적으로 목록은 유효하지만 JSON입니다. 그것. 다행이 도움이되었습니다. 'tojson'을 사용하여 답변을 업데이트합니다. – abigperson