플라스크는 파이썬을 이용해 웹 페이지나, 웹 서비스를 개발할 수 있게 해주는 웹 프레임워크다.
자 여기서 웹 프레임 워크란?
웹 프레임워크(web framework, WF) 또는 웹 애플리케이션 프레임워크(web application framework, WAF)는 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄이는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다. 출처: https://ko.wikipedia.org/wiki/%EC%9B%B9_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC |
우선 간단한 코드로 살펴보자.
from flask import Flask #1
app = Flask(__name__) #2
@app.route("/") #3
def hello(): #4
return "Hello World!"
if __name__ == "__main__": #5
app.run()
- 먼저 flask를 import 해준다. (flask는 "python -m pip install flask"를 cmd에 입력해 미리 다운 받아준다.)
- 변수 app에 Flask를 담아 인스턴스를 생성해준다.
이때 매직 메소드 혹은 스페셜 메소드인 __name__ 변수를 사용하는데
__name__ 의 역할은 현재 사용하고 있는 모듈의 상태를 나타낸다. - @ <-- '데코레이터'로 app 인스턴트의 route함수의 기능을 바로 밑줄에 작성한 hello 함수에 붙여서 꾸며준다
(그래서 데코레이터)
그리고 "/"라는 매개변수를 통해서 HTTP에 요청을 처리한다. - 간단한 함수로, 요청 발생 시 문자열 "Hello World!"를 반환한다.
- app.run()을 통해 app 객체가 실행된다.
결과로 출력된 문장에서 Running on http://127.0.0.1:5000/ 이라는 문구가 보인다.
그 문구에서 "http://127.0.0.1:5000/"를 복사해 웹 브라우저에 붙여 넣기 해주면
우리가 원하는 대로 Hello World! 가 출력된 모습을 볼 수 있다.
또는 플라스크를 이용해 직접 파이썬 코드로 작성된 함수 내에 HTML을 작성해 출력할 수도 있다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return '''<!DOCTYPE HTML><html>
<head>
<title>My First Flask</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>'''
if __name__ == "__main__":
app.run()
하지만 이 방법은 많은 코드가 작성되면 복잡하고 가독성이 떨어질 거 같다.
따라서 하위 폴더를 하나 만들어 주고
그 안에 작성한 html 파일을 출력하는 방법을 쓰는 것이 효율적일 것이다.
바로 그것을 가능하게 해주는 모듈이 render_template 모듈이다.
우선 render_template 모듈을 import 해준다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello():
return
if __name__ == "__main__":
app.run()
그 후 모듈을 실행하기 위해서는 templates라는 하위 폴더를 만들어줘야 하고
그 안에 원하는 html 페이지를 만들어 넣어준다.
나는 index.html에 이런 코드를 넣어주겠다.
<!DOCTYPE HTML><html>
<head>
<title>for template module</title>
</head>
<body>
<h1>Hey everyone can you hear me?</h1>
</body>
</html>
그다음은 아까 main.py에 작성한 코드 hello 함수 안 리턴 값을 추가해준다
다음과 같이.
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello():
return render_template("index.html")
if __name__ == "__main__":
app.run()
그리고 실행시켜주면?
내가 의도한 대로 잘 나온다.
다음은 jsonify 모듈을 이용해 html 페이지를 돌려받는 것이 아니라
json 형식으로 작성된 데이터를 받아오자.
왜 json 파일을 써야 함?
xml보다 더 적은 용량으로 데이터를 주고받을 수 있기 때문에!
우선 모듈이기 때문에 역시 import를 해준다.
from flask import Flask, render_template, jsonify
app = Flask(__name__)
다음 원하는 데이터 값을 딕셔너리 형태로 저장하여 리턴해준다.
from flask import Flask, render_template, jsonify
app = Flask(__name__)
@app.route("/")
def hello_json():
data = {'name': 'Mc Gregor', 'status': 'injury'}
return data
if __name__ == "__main__":
app.run()
그다음 실행하면?
이와 같이 입력한 데이터 값이 브라우저에서 출력이 되는 모습을 확인할 수 있다.
이번에는 http 메소드를 활용하여 get 방식을 구현해 보자.
일단 get 방식을 쓰는 이유는 서버에서 어떤 정보를 받아와 조회하기 위해서 쓴다.
우선 request 모듈을 실행하자. 실행할 거 개 많네
from flask import Flask, render_template, jsonify, request
app = Flask(__name__)
그다음 @app.route의 매개변수로 methods=['GET']을 입력
(POST 방식으로 쓰고 싶으면 methods=['POST'] 아니면 둘 다 사용 가능하다.)
request.args를 이용해 서버에서 데이터를 받게 하자.
from flask import Flask, render_template, jsonify, request
app = Flask(__name__)
@app.route("/", methods=['GET'])
def hello_request():
data = request.args.get('data')
return jsonify(data)
if __name__ == "__main__":
app.run()
그리고 실행하면
null 값이 뜨는 데 이는 get을 이용해 아직 데이터를 조회하지 않았기 때문이다.
한번 url 뒤에 ?data=galaxy 를 넣어보자.
그러면 galaxy라는 값이 잘 출력하게 된다.
'Programming > python' 카테고리의 다른 글
__파이썬__.py(간단한 모듈 파일 생성 및 실행) (0) | 2021.07.31 |
---|---|
__파이썬__.py(리스트와 튜플).feat(시퀀스 자료형, 가변, 불변) (0) | 2021.07.22 |
__파이썬__.py(출력하기) (0) | 2021.07.17 |
__파이썬__.py (0) | 2021.07.17 |
Flask를 이용해서 나만의 웹 서버 구축하기(feat.사우스 파크) (1) | 2021.07.16 |