시작전
Python 스크립트를 제작했다면 그것을 실행시킬 환경이 필요합니다. 이때 실행가능한 패키지를 만들어 배포하는 방법과 web application 형태로 만들어서 배포가 가능합니다.
그럼 Web Applications 이란 무엇일까요?
여기저기 검색해보니 모든 종류의 동적 웹 페이지와 "웹 앱" 간의 일반적인 구분은 명확하지 않습니다. "웹 응용 프로그램"이라고 하는 웹 사이트는 데스크톱 소프트웨어 응용 프로그램 또는 모바일 응용 프로그램과 유사한 기능을 가진 사이트입니다.
웹 응용 프로그램의 장점은 플랫폼에 독립적이며 인터넷에 액세스할 수 있는 모든 사람이 실행할 수 있다는 것입니다. 코드는 백엔드 서버에서 구현되며, 이 서버에서는 프로그램이 들어오는 요청을 처리하고 모든 브라우저에서 이해할 수 있는 공유 프로토콜을 통해 응답합니다.
Python은 많은 대형 웹 애플리케이션을 지원하며 백엔드 언어로 일반적으로 선택됩니다
7 Top Python Frameworks
조금만 검색해보면 유명한 framework이 많이 있습니다.
7 Top Python Frameworks You Should Consider for Your Next Project
Full Stack Framework
CubicWeb
Django
Web2Py
Giotto
Pylons Framework
Pyramid
TurboGears
Micro-framework
Bottle
CherryPy
Dash
Falcon
Flask
Hug
MorePath
Pycnic
출처 : https://www.monocubed.com/top-python-frameworks/
여기에서는 Flask 를 통해서 간단한 예제를 만들어 보도록 하겠습니다.
Python 웹 애플리케이션에 대해 알아보기
오래전 웹 사이트에는 해당 페이지에 액세스한 모든 사용자에게 동일한 고정 콘텐츠가 있었습니다. 이러한 웹 페이지는 상호 작용할 때 콘텐츠가 변경되지 않기 때문에 정적이라고 합니다. 정적 웹 페이지를 제공할 때 웹 서버는 어떤 사용자인지 관계없이 누구나 같은 해당 페이지의 콘텐츠를 다시 전송하여 요청에 응답합니다.
오늘날 대부분의 웹 사이트는 제공하는 콘텐츠를 변경할 수 있는 동적 웹 페이지를 제공하는 진정한 웹 앱입니다.
예를 들어 GMail 페이지를 접속해보면 다양한 방법으로 사용자와 응용 프로그램간 상호 작용할 수 있습니다.
Python 기반 웹 애플리케이션은 Python 코드를 사용하여 수행할 작업과 표시할 콘텐츠를 결정합니다. 코드는 웹사이트를 호스팅하는 웹 서버에서 실행되므로 사용자는 아무것도 설치할 필요가 없습니다. 코드와 상호 작용하는 데 필요한 것은 브라우저와 인터넷 연결뿐입니다.
웹 사이트에서 Python을 실행하는 것은 복잡할 수 있지만 세부 사항을 자동으로 처리하는 다양한 웹 프레임워크가 있습니다. 위에서 언급했듯이 여기에서는 Flask 를 이용할 것입니다.
또한 실제 서버를 사용할것은 아니고 local pc에 간단하게 호스팅을 할 예정으로 따로 서버를 준비할 필요는 없습니다.
Flash 기본
flask간단한 기본 코드는 아래와 같습니다.
파일명 : _31_flask_webapp.py
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "This is a web app!" if __name__ == "__main__": app.run(port=8080, debug=True)
cmd line 에서 위 내용의 py 파일을 실행 시켜줘야합니다.
C:\Users\USER\Documents\GitHub\sourcecode\python\example>python _31_flask_webapp.py * Serving Flask app "_31_flask_webapp" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Restarting with stat * Debugger is active! * Debugger PIN: 298-679-048 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
이번에는 브라우저로 접속 하면됩니다. 127.0.0.1 은 localhost와 같습니다.
간단한것 같은데 이걸로 뭘 만들 수 있을지 생각해봅시다.
Python 계산기 스크립트를 브라우저에서 실행 시키기
계산기를 웹 앱으로 만들기 전에 일단 계산기 기본 함수 코드는 아래와 같습니다.
def calc(stringdata): return str(eval(stringdata)) if __name__ == "__main__": print(calc("100+200"))
핵심은 eval 이란 내장 함수입니다. 너무 너무 간단합니다.
시험삼아 위와 같은 코드를 실행시키면 결과로 300 이 출력됩니다.
flask 기본앱에 계산기를 넣어보겠습니다.
전체 코드는 아래와 같습니다.
from flask import Flask from flask import request app = Flask(__name__) @app.route("/") def index(): inputdata = request.args.get("inputdata", "") if inputdata: result = calc(inputdata) else: result = "" return ( """<form action="" method="get"> Calc : <input type="text" name="inputdata"> <input type="submit" value="calc"> </form>""" + "result:" + result ) def calc(inputdata): return str(eval(inputdata)) if __name__ == "__main__": app.run(port=8080, debug=True)
위 코드를 이해하기 위해서는 html의 기초적인 문법을 이해해야하는데 아래 코드는 입력을 받기위한 FORM을 구성하는 화면입니다.
<form action="" method="get"> Calc : <input type="text" name="inputdata"> <input type="submit" value="calc"> </form>
이때 FORM의 get메소드를 이용해서 전송한다는 뜻입니다. 그리고 입력은 text로 inputdata란 이름을 가지고 있으며, 전송 버튼을 누르면 인자를 통해서 inputdata와 내용이 전송 되는데 request.args.get("inputdata", "") 이런 형태로 서버에서는 읽을 수 있습니다. 여기서 get은 form이 get으로 되어있기 때문에 그렇습니다.
inputdata 가 있으면 이전에 만들어둔 calc함수를 호출하여 결과를 받고 아니라면 빈결과를 출력 하면 됩니다.
서버를 실행시켜줍니다.
C:\Users\USER\Documents\GitHub\sourcecode\python\example>python _31_flask_webapp.py * Serving Flask app "_31_flask_webapp" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Restarting with stat * Debugger is active! * Debugger PIN: 298-679-048 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit) 127.0.0.1 - - [28/Nov/2021 16:55:16] "[37mGET / HTTP/1.1[0m" 200 -
아래와 같이 브라우저를 이용해서 접속을 합니다.
댓글 없음:
댓글 쓰기