@app.route("/index")
def index():
data = "<p>안녕하세요.</p><p>반갑습니다.</p>"
return render_template('index.html', data=data)
위와 같이 서버에서 html 요소를 전달한 것을 jinja2를 통해 html 문서에서 표현해야 하는 상황인 경우에는 다음과 같이 safe라는 필터를 걸어줘야 한다.
{{data|safe}}
안녕하세요.
반갑습니다.
safe 필터를 걸어주면 autoescape가 비활성된다. 그렇지 않고 {{data}}로 사용하면 p 태그를 인식하지 못하고 그냥 문자열로 받아들인다.
{{data}}
<p>안녕하세요.</p><p>반갑습니다.</p>
주의할 것은 safe 필터는 개발자가 신뢰할 수 있는 데이터가 표출되는 곳에 대해서만 사용해야 한다는 점이다. 그렇지 않으면 XSS(cross-site scripting) 공격을 받을 수도 있다. 참고로 XSS란 웹 사이트의 입력 폼에 악성 스크립트를 삽입하여 공격하는 기법이다.
참고자료
[1] https://stackoverflow.com/questions/3206344/passing-html-to-template-using-flask-jinja2
'코딩 > flask' 카테고리의 다른 글
[flask] Ajax로 json 데이터 post 전달시 flask 서버 get_json() 관련 오류 해결 방법 (0) | 2022.08.29 |
---|---|
[flask+jinja2] flask 프로젝트에서 html에 이미지 삽입하는 방법 (0) | 2022.08.09 |
[flask] ubuntu에 flask_mysqldb 설치 중 에러 해결 방법 (0) | 2022.07.14 |
[flask+jinja2] 반올림하기, round 필터 (0) | 2022.03.19 |
[flask+jinja2] break 사용하기 (2) | 2022.02.05 |
[flask] rows에서 각 row가 몇 번째 것인지 보여주고 싶다면? (0) | 2021.05.15 |
[flask] 구름 IDE의 항상 켜두기 기능을 이용해서 flask 웹 서버 구동하기 (0) | 2021.03.29 |
[flask] 색칠 공부 도안 만들어주는 사이트 제작 (16) | 2021.03.24 |