아두이노프로세싱 프로그래밍

라즈베리 파이 Flask 와이파이 모듈에 의한 웹브라우저 HTML FORM POST 파이선 3 코딩

coding art 2017. 7. 5. 14:29
728x90

Framework를 지원하는 Flask 모듈을 바탕으로 와이파이 코딩에 의해 웹브라우저로부터 입력된 on OFF 명령을 GET 방식으로 라즈베리 파이의 GPIO 에 배선된 LED를 on OFF 할 수 있었다.
반면에 개인정보를 포함 보안을 필요로 하는 데이터에 대해서는 url 인터넷 주소창을 통해 전송되는 데이터를 볼 수 있는 GET 방식에 반하여 전달 정보를 볼 수 없는 POST 방식이 이용된다.
이번 예제에서는 라즈베리 파이 본체에 별도의 센서 배선이 없이 라즈베리 파이와 웹브라우저를 연결하여 소문자로 FORM 데이터를 작성하고 POST 방식으로 전송해서 일단 한번 출력 후 다시 대문자로 바꾼 다음에 웹 브라우저에 대문자로 출력하도록 하는 Flask 모듈 지원 와이파이 코드를 작성한다.
HTML  코드부터 작성하도록 한다.


form 태그에서 method 를  POST 로 둔다. 텍스트 입력 박스를 출력한 다음 Send 버튼을 만들고 누르면 전송(Submit) 한다.

파이선 코드에서는 Flask 모듈과 return 작업을 위해 render_template를 불러들인다. 동시에 request 도 설정해야 한다.

이 셋을 Flask, render_template, request 한 줄로 코딩해도 무방하다.

첫 번째 @app.route에서 root 디렉토리를 설정하고 해당하는 HTML 코드를 my-form.html 로 지정한다.


두 번째  @app.route에서는 root 디렉토리에 methods  즉 통신 방법을 POST 로 설정하고 함수를 새로  my_form_post() 로 설정한다.  여기서는 웹브라우저로 보내는 정보를 인터넷 주소창에서 즉 중간에서 볼 수 없다.
웹브라우저에서 form request를 통해 파이선에 전달된 정보는 변수 text에 담는다.



그 다음의 print() 문은 콘솔에 출력하게 된다. POST 하는 데이터는 전달 과정에서 볼 수 없으나 print() 출력 문을 사용하게 되면 아래와 같이 콘솔 창에서 웹브라우저에서 보내온 소문자를 출력해본 결과 “myraspberry” 를 볼 수 있다. 하지만 이 문자를 대문자로 바꾼 후 POST에 의해 웹브라우저에 전달 된  url 주소창에서는 이 정보를 볼 수 없으나 웹브라우저는 전달 받은 이 정보를 가지고 있음에 유의하자. 즉 웹브라우저에서 출력하면 대문자 문자열을 볼 수 있다.