Python에서 AngularJS 사용시 특히 flask 프레임워크를 사용하면 500 internal server error 발생할 수 있으며 이를 수정하는 방법에 대하여 알아봅니다.




# Python flask에서 AngularJS 사용시 500 에러가 나타나는 이유

원인은 Python에서 사용되는 Jinja2의 표현식 심볼 {{ }}과 AngularJS의 {{ }}가 동일하여 서버에러가 발생하게 된다. 이를 수정하기 위한 방법은 무엇일까요?


​​​​​​​
# Python Jinja2와 AngularJS 사용되는 {{ }} 기호를 다르게 설정하기
AngularJS의 표현식에 사용되는 심볼기호를 다르게 적용하면 더 이상 에러는 발생되지 않습니다. 이때 아래와 같이 $interpolateProvider 서비스의 startSymbol() 메소드를 사용합니다.

webisApp.config(function($interpolateProvider){
  $interpolateProvider.startSymbol('{[{').endSymbol('}]}');
});

이처럼 코드를 변경한 후 기존의 AngularJS HTML에 사용한 바인딩 코드를 모두 {{ }} 에서 {[{ }]}로 변경하도록 합니다. 그러면 에러는 발생하지 않습니다.


이번에는 Jinja2의 심볼을 변경하는 것도 가능합니다. 아래와 같이 config 옵션을 변경합니다.

jinja_options = myApp.jinja_options.copy()

jinja_options.update(dict(
block_start_string='<%',
block_end_string='%>',
comment_start_string='<#',
comment_end_string='#>',
variable_start_string='%%',
variable_end_string='%%'
))
myApp.jinja_options = jinja_options

두 가지 방법 중 angularJS를 바꾸는 방법이 많이 사용되는 것 같습니다.