2017-01-26 12 views
0

저는 플라스크 앱을 만들고 있는데, 특정 매개 변수를 추적하기 위해 프론트 엔드의 자바 스크립트에 파이썬 백엔드에서 생성 된 변수를 전달해야합니다. 그러나 이상한 인코딩 문제가 발생했습니다. 다음은 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> 

, 나는 다음을 참조 :

[&#39;Michael&#39;] 

앰퍼샌드 # 39 인 ASCII 아포 스트로크를위한 문자 인코딩. 내가 (console.log({{ name }}) 모양) 위의 CONSOLE.LOG 문에서 아포스트로피 (작은 따옴표)를 생략하면 나는 다음과 같은 오류 얻을 :

Uncaught SyntaxError: Unexpected token &

을 나는 <script> 태그 외부의 아무 곳이나 변수를 인쇄 할 때 이상한 일이되어 그 잘 작동합니다.

어떤 문제인지, 어떻게 해결할 수 있습니까?

답변

1

이 같은 유효한 JSON 개체/목록을 가지고 신사 내에서 자바 스크립트를 사용 이내에 tojson 필터를 사용하려면 :

console.log({{ name|tojson }}); 

tojson 필터는 safe 같은 값을 표시하므로 자동 해제 탈출.

+0

'name'은 사전이 아닌 목록입니다. 왜 우리는 json 필터를 사용할 수 있습니까? 이것은'tojson','safe' 또는 둘 모두를 사용하든 상관없이 감사합니다! 감사합니다! 하나 또는 둘 다를 사용하는 것이 더 낫습니까? jinja2 문서를 기반으로'safe'가'tojson'에 내장되어 있습니다. –

+1

예 ...이 트릭을 배운 후에 새로운 추가 기능이 될 수 있다고 생각합니다.) 기술적으로 목록은 유효하지만 JSON입니다. 그것. 다행이 도움이되었습니다. 'tojson'을 사용하여 답변을 업데이트합니다. – abigperson

관련 문제