파이썬 플라스크 웹페이지 제작후기 - 전역변수를 사용하지 말자!

2019. 11. 12. 07:01

여러가지 이유로 플라스크로 웹페이지를 제작하고 있다. 간단한 화면 정도는 해 봤지만, 좀 더 깊게 들어가보기로 했다. 대략적으로 레이아웃을 잡고 만들기 시작했다. 금방 끝날 줄 알았지만 여러가지 시행착오와 디버깅으로 소요시간이 늘어나고 있다. 이번 달에는 어찌저찌 끝날 것 같긴 하지만, 웹페이지를 제작하며 겪은 시행착오를 공유하해 보고자 한다.

오늘은 파이썬 플라스크 웹페이지 제작후기 - 전역변수를 사용하지 말자에 대해서 알아보도록 하겠다.


전역변수



전역변수를 사용하면 안 되는 이유는?

코딩을 하다보면 여러가지 이유로 전역변수의 필요성을 느끼게 된다. 로컬에서 코딩을 할 때는 전역변수를 사용해도, 잘 작동하는 것을 확인했다. 전역변수를 사용할 때도 사용자별로 분기가 되서 처리되는지 궁금했는데, 확인결과 사용자별로 분기가 되지 않는다.

전역변수를 사용하면 한 사용자가 수정한 값이 다른 사용자에게도 반영되는 것이다. 웹페이지가 완전 꼬이게 된다.


g라는 다른 대안은 있지만.

이런 상황을 나만 겪은 것은 아닐 것이다. 플라스크에는 g라는 모듈이 있어 사용자별로 전역변수를 사용할 수 있게 되어 있다. 이 객체를 이용해봤지만 무슨 일인지 잘 작동하지 않는다. iframe을 사용해서 그런지는 모르겠지만, 정확한 이유를 알기 어렵다. 그래서 g라는 뮤듈에 대해서는 나중에 좀 더 알아보기로 하고 다른 방법을 찾기로 했다. g라는  모듈에 대한 자세한 내용이 궁금하다면 아래 링크를 참조해보자.
( 참조: 플라스크 g 알아보기 )


입력



사용자 웹페이지에 값을 넣기로 했다.

이 방법, 저 방벙 해보다가 필요한 값을 사용자의 웹페이지에 박기로 했다. input 태그의 hidden타입을 이용하면 사용자의 눈에는 보이지 않지만 값을 넣을 수 있다. 그래서, 플라스크 코드에 아래와 같이 넣었다.


1
2
3
 
si_infor = '<input type="hidden" name="si_front" value="' + si + '">'
 
cs


si라는 변수의 값을 input 태그로 넣었다. render_template함수에 해당 값을 변수로 해서, 아래와 같이 form태그 사이에 넣었다.


1
2
3
4
5
 
<form method="get">
      {{ si_infor|safe }}
</form>
 
cs


이렇게 하고 코드를 실행시키니 잘 작동한다. 다른 더 좋은 방법이 있는지는 모르겠다. 더 좋은 방법이 있다면 공유해 주기를 바란다.



오늘은 이렇게 플라스크 웹페이지 제작후기 - 전역변수를 사용하지 말자에 대해서 알아보았다. 단일 프로그램을 제작하는 것과 웹페이지를 제작하는 것은 설계(?) 면에서 좀 다른 듯 하다. HTML, CSS, JAVASCRIPT도 알아야 한다. 모든 일이 그렇지만 설계가 중요하다는 것을 다시 한 번 느끼게 된다.


오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.

(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)


댓글()
  1. Favicon of https://streamls.tistory.com BlogIcon 미니멀리 2021.01.20 19:12 신고 댓글주소  수정/삭제  댓글쓰기

    좋은 글 잘 보고 갑니다.^^