728x90

시작하기 전에

전반적으로 jupyter notebook을 기반으로 공부할 것이기 때문에,

블로그 내에 주피터 노트북 설치 및 사용법에 대한 글을 보고 오는 것을 추천!

hazel-developer.tistory.com/28?category=816275

 

파이썬으로 백엔드 구성하기 전에...

시작하기 전에 파이썬으로 새로운 프로젝트를 시작하면서, 우리는 프레임워크를 flask로 결정하게 되었다. 파이썬하면 흔히들 Django를 이야기하다보니 처음에 당연히 Django를 프레임워크로 사용

hazel-developer.tistory.com

 

Flask에 대해서

flask는 마이크로 프레임워크로서, 웹 서버 개발에 필요한 핵심적인 기능만 제공한다. 

 -> 여기서 핵심적인 기능

   : 웹 개발 최소기능, RESTful 요청처리, 유니코드 기반 등 이며, 추가적인 기능은 다른 라이브러리와 혼용해야 한다. 

 

파이썬에서는 flask와 반대되는 풀스택 프레임워크가 Django이며, 이는 관련해서 핵심적인 것뿐 아니라 모든 기능을 제공한다. 

따라서 처음에 익숙해지기 위해 학습하는 데에 시간이 많이 필요하고, 프레임워크 자체가 무겁다. 

보통 flask로 파이썬 웹서버개발을 익히고 Django를 익히는 것을 추천? 하는 편이라고 나는 들었는데, 이도 취향차이!

 

flask 공식 홈페이지

http://flask.pocoo.org/

 

Welcome to Flask — Flask Documentation (1.1.x)

 

flask.palletsprojects.com

flask 사용 기초

1. flask 설치하기 : pip install flask

2. flask 임포트 하여 사용하기 :  from flask import Flask

3. flask를 app에 할당 : app = Flask(__name__) 

 -> app을 활용해서 다양한 웹서비스 기능을 하용

 -> flask 객체에 넣어주는 __name__은 무엇일까?

  • __name__ 이라는 변수는 모듈의 이름이 저장됨

  • 실행하는 코드에서는 __main__ 값이 들어감. 즉 __name__이란 변수에 main으로써 실행되어 출력되는 것이다. 

  • 파이썬에서 디폴트로 설정해주는 이름이다. 

test.py에 아래와 같은 코드를 실행하게 되면,

1
2
3
4
5
6
7
8
9
def add_one(data):
    return data + 1
 
def add_two(data):
    return data + 2
 
if __name__ == '__main__'# 모듈이 아니라, 해당 코드 직접 실행시만 실행
    print(add_one(10))
    print(add_two(10))
cs

-> 모듈을 사용하지 않고 파일 내에서 __name__을 실행했기 때문에, __name__값은 __main__이 되고, 따라서 함수들이 실행 및 print 된다. 

 

하지만, 다른 파일에서 import test 로 , 위의 파일을 모듈로서 임포트해서 사용하게 된다면,

print(test.add_one(10)) 이렇게 실행해 주어야 한다.

 

파이썬과 시작점(entry point)

  • 파이썬은 스크립트 언어

  • 스크립트 언어는 전통적으로 시작점없이 스크립트 코드를 바로 실행함

flask로 웹서버를 구성하려 하면 ,

1
2
from flask import Flask
app = Flask(__name__)
cs

해당 코드로 시작하게 된다.

 

라우팅경로 설정하기

1
2
3
@app.route("/hello")
def hello():                           
    return "<h1>Hello World!</h1>"
cs

-> @는 파이썬의 데코레이터라는 기능으로 이는 차후에 별도로 정리해보려 한다.

-> app.route('/경로주소")

-> def 뒤의 함수명은 경로주소와 꼭 같을 필요는 없다. 

-> 즉 app.route 밑에 바로 쓰인 함수를 실행하며 라우팅 해주는 것이다. 

 

그리고 flask의 경우는, 웹서버를 실행하기 위한 정보들을 입력한다.

  • 서버로 구동한 IP 와 포트를 옵션으로 넣어줄 수 있음

  • app.run() 함수로 서버 구동 가능

    • host, port, debug 를 주로 사용함

      • host: 웹주소

      • port: 포트

      • debug: True or False

run(host=None, port=None, debug=True)

-> debug 즉, 실행할때 에러가 날 경우 에러 정보를 제공할 것인가 / 그러나 jupyter notebook 상에서는 debug에 대한 정보는 설정하지 않아도 된다.

 

기본 개발 프로세스

  • 자신의 PC 에서 웹서비스 구현

      • localhost, 127.0.0.1, 또는 0.0.0.0 으로 host 설정

      • app.run() 함수로 자체 웹서버 구현 가능

     

    1
    2
    3
    4
    host_addr = "0.0.0.0"
    port_num = "8080"
    if __name__ == "__main__":              
        app.run(host=host_addr, port=port_num)
    cs

     

전체 기본 코드

1
2
3
4
5
6
7
8
9
from flask import Flask
 
app = Flask(__name__)
@app.route("/hello")
def test():                           
    return "Hello Flask!"
 
if __name__ == "__main__":              
    app.run(host="127.0.0.1", port="8080")
cs

 

아래와 같은 결과를 얻을 수 있다.

 

-> 보통 VSC에서 위의 코드를 입력하고, 터미널 창에 python3(or python) 파일이름.py를 입력하면 실행된다.

오 자바 스크립트의 node 파일이름과 비슷하다!

728x90

+ Recent posts