웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > flask

Python Flask에서 AngularJS를 사용할때 파싱 에러 피하는 방법

Last Modified : 2018-04-30 / Created : 2017-08-03
2,377
View Count
Python의 Flask는 Jinja2 엔진을 사용하여 html 코드에서 angularJS의 표현식을 {{ text }}을 사용할 경우 의도한 바와 다르게 Python에서 파싱이 일어나게 됩니다. 이런 문제점을 해결하는 방법을 알아봅니다. 어떤 방법이 있을까요?


! raw를 선언하는 방법
<ul>
{% raw %}
  {% for item in seq %}
      <li>{{ some_var }}</li>
  {% endfor %}
{% endraw %}
</ul>


이런 이유로 둘 중 하나의 표기를 바꾸는 방법이 많이 사용되는데 보통 아래처럼 많이 사용합니다.


! Python Flask 원래코드
<span>{{ angularValue }}</span>

변경 후
<span>{[{ angularValue }]}</span>
<span>{a angularValue a}</span>

위와 같은 방법도 좋지만 다른 방법은 없을까요? 이때 따옴표 기호를 사용하는 것도 좋습니다. 아래를 봐주세요.

<span>{{ angularValue }}</span>
<span>{{ '{{ angularValue }}' }}</span>


첫번째 코드는 Flask의 Python에서 Parsing되고 종료되지만 아래는 Python에서 Compile된 후에 다시 AngluarJS에서 표현식으로 파싱되도록 {{ }} 코드를 반환 사용됩니다. 간단하게 적용할 수 있는 가장 좋은 방법이 아닐까 생각합니다.



# 만약 Python과 AngularJS의 표현식이 혼합 사용되는 경우

AngluarJS 표현식 내부에 Python 표현식이 존재하는 경우 어떻게해야할까요? 아래처럼 따옴표를 적절하게 이용하는 것이 가능합니다.

<span>{{ '{{ angularValue(' + pythonValue + ') }}' }}</span>

이와 같은 방법으로 사용하면 Python과 AngularJS를 동시에 사용하는 것이 가능합니다.