기술나눔

[Flask 노트] 완전한 Flask 프로그램

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

앞서 언급했듯이 Flask는 경량 웹 개발 프레임워크입니다. 왜 경량이라고 하는 걸까요? 가장 간단한 플라스크 프레임워크를 살펴보겠습니다.

플라스크 설치

Flask 프레임워크를 살펴보기 전에 먼저 플라스크 모듈을 설치해야 하는데, Python을 공부해 본 사람이라면 플라스크 모듈 설치가 실제로 매우 간단하다는 것을 아실 겁니다.

pip install flask
  • 1

여기서 언급할 점은 모듈 설치 시 다운로드 실패가 발생하는 경우 대부분 Python이 기본적으로 공식 다운로드 모듈 주소를 사용하기 때문이며, 이 주소는 중국에서 액세스할 때 가끔 불안정하다는 것입니다. 다운로드하려면 Tsinghua의 다운로드 소스를 사용하는 것이 좋습니다. 그러면 속도가 훨씬 빨라지고 오류나 시간 초과가 발생하지 않습니다.

https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

사용 방법도 매우 간단합니다. 첫 번째는 a를 추가하는 것입니다.-i매개변수 다음에 URL이 오면 모듈은 다음과 같이 이 주소에서 다운로드됩니다.

pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

위의 방법은 임시 다운로드에만 사용할 수 있으며 다운로드 소스를 영구적으로 변경할 수는 없습니다. 기본 다운로드 소스를 변경하는 또 다른 방법은 다음과 같습니다.

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

변경 후 통과하시면 됩니다pip config list변경이 성공했는지 확인하면 다음과 같이 표시됩니다.

(.venv) ❯❯ pip config list
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
  • 1
  • 2

최소한의 완전한 Flask 프로그램

Flask가 성공적으로 설치되면 예제를 볼 수 있습니다. 이것은 완전한 플라스크 프로그램이며 플라스크를 실행하는 데 필요한 작은 단위입니다. 다음 코드를 my_flask.py와 같은 py 파일에 저장합니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

위 코드에서 볼 수 있듯이 단 10줄의 코드만으로 플라스크를 실행할 수 있으므로 플라스크는 경량 웹 프레임워크입니다.위의 코드는 짧지만 포괄적이고 Flask를 실행하는 데 필요한 모든 것을 포함하고 있습니다. 애플리케이션 인스턴스, 라우팅 및 보기 기능은 가장 간단한 Flask 프로그램을 구성합니다.

응용

애플리케이션 인스턴스는 실제로 Flask의 애플리케이션 개체입니다. 여기서 언급된 개체는 여자친구가 아니라 요청 처리, 경로 배포 및 보기 함수 호출을 포함할 수 있는 웹 애플리케이션 코어, 즉 해당 문장입니다.app = Flask(__name__), Flask 예제의 소스 코드를 살펴보면 시작 매개변수 실행, 라우팅 규칙, 요청을 보내고 받는 방법에 대한 정의 등과 같이 논의되지 않는 많은 콘텐츠가 포함되어 있음을 알 수 있습니다. 여기에 자세히 설명되어 있습니다.

라우팅

라우팅은 URL과 기능 간의 대응을 처리하는 데 사용됩니다.여기서는 이해를 돕기 위해 웹의 전체 작동 원리에 대해 이야기해야 합니다. 먼저 아래 그림을 살펴보세요.
여기에 이미지 설명을 삽입하세요.
웹 브라우저는 요청을 시작하고, 웹 서버는 요청을 수신하여 Flask 애플리케이션으로 요청을 보냅니다. Flask 애플리케이션은 요청된 URL을 수신한 후 해당 처리 기능을 찾습니다. 이것이 전체 라우팅이 작동하는 방식입니다.
위에 해당하는 프로그램이 바로 그 기능입니다.

@app.route('/')
def index():
    return "Hello, World!"
  • 1
  • 2
  • 3

파이썬을 비교적 깊게 배우신다면 위의 코드를 아실 수 있을 것입니다.@app.route('/')는 뷰 함수를 등록하는 데 사용되는 데코레이터이며 괄호 안의 내용은 사용할 경로입니다.'/'루트 경로를 의미합니다.http://127.0.0.1:5000;로 변경된 경우‘/login/’이는 로그인 경로를 사용하는 것을 의미합니다.http://127.0.0.1:5000/login/;'/user/<name>'동적 변수 라우팅이 됩니다.<name>다음과 같이 전송된 콘텐츠에 따라 동적으로 변경됩니다.http://127.0.0.1:5000/user/jay, 이 Jay는 브라우저를 통해 경로에 연결되어야 합니다.
이는 사용 편의성을 위해 Flask에서 단순화되었습니다. 실제로 경로를 정의하는 전통적인 방법은 더 이상 일반적으로 사용되지 않으므로 여기서는 자세히 설명하지 않겠습니다.
라우팅에 관해 여기서 언급해야 할 또 다른 점이 있습니다. 즉, Flask의 동적 변수 라우팅은 위와 같은 string, int, float 및 경로 유형만 지원합니다.<name> 문자열 유형이 사용됩니다. 이 유형은 기본적으로 작성할 필요가 없습니다. 슬래시(/)를 제외한 모든 문자 시퀀스와 일치할 수 있습니다.다른 유형의 경우 식별해야 하는 경우 다음과 같이 유형을 작성해야 합니다.'/path/<path:my_path>'

보기 기능

View 기능은 Routing에서 정의한 기능인 Inbound Request를 처리하는 기능입니다.

def index():
    return "Hello, World!"
  • 1
  • 2

위의 기능은 소위 보기 기능입니다. 들어오는 요청을 처리하고 응답을 반환하는 데 사용됩니다.

응답

위에서 return Response를 언급했는데 Response가 무엇인가요? 응답은 뷰 함수에서 반환되는 값이며 문자열이거나 복잡한 형식일 수 있습니다. 또한 Flask에서 제공하는 render_template() 함수를 사용하여 html을 반환할 수도 있습니다. 경로를 리디렉션하는 리디렉션() 함수입니다.

시작하다

Flask 프로그램의 5개 내부 부분이 위에 요약되어 있지만 Flask를 실행할 진입점이 하나 더 적습니다. 이는 이 코드의 마지막 두 줄입니다.

if __name__ == '__main__':
    app.run(debug=True)
  • 1
  • 2

첫번째 줄if __name__ == '__main__':, 파이썬을 공부해 본 사람이라면 이것이 파이썬의 진입 방식, 즉 현재 파일이나 모듈이 메인 프로그램으로 직접 실행된다는 것을 알 것이다.
두 번째 줄app.run(debug=True)위에서 생성한 Flask 객체를 호출하고 run() 함수를 실행하여 Flask를 실행하게 하고, Flask가 디버깅 모드로 시작되었음을 알려주기 위해 run() 함수에 debug를 매개변수로 전달하는 것입니다. 리로더와 디버거가 자동으로 로드됩니다.
그런 다음 명령줄로 이동하여 my_flask.py 파일의 디렉터리를 입력하고 명령줄에 다음을 입력합니다.python my_flask.py아래 그림과 같이 프로그램을 시작할 수 있습니다.
여기에 이미지 설명을 삽입하세요.
브라우저를 열고 들어갑니다.http://127.0.0.1:5000아래와 같이 Hello, World!를 볼 수 있습니다.
여기에 이미지 설명을 삽입하세요.

이제 우리의 완전한 Flask 프로그램이 가져야 할 개념에 대한 설명이 끝났습니다. 물론 이것은 가장 기본적인 내용입니다. Flask 기반의 웹 애플리케이션을 완전히 개발하려면 아직 배워야 할 것이 많이 있습니다. 템플릿이나 데이터베이스, 프론트엔드 기술 등으로 저자도 배우면서 글을 쓰고, 또 파인만의 학습법을 활용하여 좀 더 확실하게 기억할 수 있도록 작성과정에서 누락된 부분이나 오류가 있으면 지적 부탁드립니다. 지적하다.