python flask tutorial introduction flask
이 입문 Python Flask 자습서에서는 코드 예제, 디버깅 및 테스트에 대한 섹션과 함께 Flask, Python 설치, Virtualenv, Flask Hello World 예제에 대해 설명합니다.
웹 사이트 개발은 기술보다는 예술에 가깝습니다. 진정한 성공을 위해 필요한 것을 만들기 위해서는 인내와 용기, 헌신과 함께 인내와 근면이 필요합니다. 요즘에는 학습자가 가능한 한 빨리 속도를내는 것이 중요합니다.
우리는 학생들이 Python 3을 사용하여 간단하고 복잡한 웹 프로그래밍을 빠르게 익히고 구현할 수 있도록 Python Flask 자습서를 만들었습니다.
이 Python Flask 자습서는 Python, Virtualenv 및 기타 필수 패키지의 설치를 다루는 플라스크 초보자 자습서와 비슷합니다. 이 튜토리얼 시리즈에서는 필요한 다른 Flask 플러그인과 함께 Flask를 설치합니다. 또한 Git 작업을 사용한 코드 디버깅, 테스트 및 지속적 통합에 대한 섹션도 포함되어 있습니다.
학습 내용 :
이 플라스크 시리즈의 튜토리얼 목록
튜토리얼 # 1 : Python Flask 자습서 – 초보자를위한 Flask 소개
튜토리얼 # 2 : Flask 템플릿, 양식,보기 및 리디렉션 예제
튜토리얼 # 3 : Flask 데이터베이스 처리 – 데이터베이스와 함께 Flask를 사용하는 방법
튜토리얼 # 4 : Blueprint 및 Bootstrap이있는 Flask 앱 및 Flask 프로젝트 레이아웃
튜토리얼 # 5 : 웹 애플리케이션을위한 플라스크 디자인 패턴 및 모범 사례
튜토리얼 # 6 : 예제가 포함 된 Flask API 자습서 | API로 Flask 확장
튜토리얼 # 7 : Django 대 Flask 대 노드 : 선택할 프레임 워크
튜토리얼 # 8 : 답변이있는 인기있는 Python Flask 인터뷰 질문 31 가지
플라스크 란?
Flask는 웹 개발 프레임 워크입니다. 기본 제공 개발 서버와 디버거가있는 프레임 워크입니다.
YouTube를 mp4 고품질로 변환
Flask 프레임 워크 자체는 웹 개발자가 소프트웨어 개발 커뮤니티에서 자주 릴리스되는 변경 사항을 유연하게 수용하고 편안하게 수용 할 수 있다는 점에서 다른 원형과 다릅니다.
플라스크의 용도
Python 프로그래밍 언어로 웹 애플리케이션을 개발하기 위해 Flask 프레임 워크를 사용합니다. 다른 타사 서비스 및 API와 통합되어 개발중인 애플리케이션에 풍부함과 의미를 부여합니다. Flask의 핵심 개념은 간단하며 설치 공간이 작습니다.
이 Python Flask 가이드로 시작하여 Flask GitHub 저장소를 사용하여 웹 개발을 이해합니다. 그러나 진행하기 전에 논의 된 코드 예제를 쉽게 추적 할 수 있도록 Github에서 프로젝트를 복제하십시오.
전제 조건
이 섹션에서 언급 한 제목 외에 Github 계정을 만드는 것이 좋습니다. 사전 요구 사항에서 아래에 언급 된 단계를 진행하겠습니다.
1 단계 : Python 설치
Python 3을 설치했는지 확인하십시오. 그렇지 않은 경우 Python 3을 여기 운영 체제에 따라 설치하십시오.
2 단계 : Python 가상 환경 생성
아래 명령을 사용하여 가상 환경을 만듭니다.
python3 -m venv venv
아래 명령을 사용하여 Python 가상 환경을 활성화하십시오.
source venv/bin/activate
아래에 가상 환경 활성화 및 비활성화의 예가 나와 있습니다.
이 자습서의 모든 후속 명령은 활성화 된 가상 환경에서 실행되어야합니다. 가상 환경 내에 바퀴를 만들 수 있도록 wheel 패키지를 설치하십시오.
pip install wheel
3 단계 : 플라스크 다운로드 및 설치
Flask 다운로드 단계를 수행하고 아래에 언급 된 단계를 사용하여 Flask를 설치해야합니다.
이제 Flask를 설치하십시오.
pip install flask
우리 중 일부는 최신 소스 코드 변경 사항과 함께 작업하는 것을 좋아합니다. 아래에 제공된 명령을 사용하여 Flask 소스에 대한 최신 변경 사항으로 설치할 수 있습니다.
임시 디렉토리를 만드십시오.
mkdir tmp
이제 Github 저장소에서 Flask를 설치합니다. 아래 명령이 작동하려면 인터넷에 연결되어 있어야합니다.
pip3 install -e git+git@github.com:pallets/flask.git#egg=flask
콘솔 출력을보고 성공적인 설치를 확인하십시오. 이제 Flask 명령에 액세스 할 수 있는지 확인합니다.
flask --help
Flask 애플리케이션의 부재에 대한 몇 가지 예외가 표시 될 수 있습니다. 그러나 Flask 앱을 만들지 않았으므로 무시하십시오. 우리 앱은 Werkzeug 웹 프레임 워크 및 Jinja 템플릿 엔진의 래퍼 인 Flask의 인스턴스입니다.
수단
Werkzeug는 WSGI 툴킷입니다. WSGI는 웹 서버가 전달할 유일한 호출 규칙입니다. 웹 요청 Python 프로그래밍 언어로 작성된 웹 애플리케이션에.
Jinja
템플릿은 웹 개발자의 필수 기술입니다. Jinja는 모든 기능을 갖춘 인기있는 Python 용 템플릿 엔진입니다. 매우 표현적인 언어이며 템플릿 작성자에게 강력한 도구 세트를 제공합니다.
4 단계 : MongoDB 설치
아래에 언급 된 단계에 따라 MongoDB를 설치하십시오. Debian 기반 Linux에 설치하는 단계를 설명했습니다. 다른 운영 체제를 사용하는 경우 링크 원하는 운영 체제에 따라 설치하십시오.
MongoDB 공개 GPG 키를 가져 오기 위해 gnupg를 설치합니다.
sudo apt-get install gnupg
이제 아래 명령을 사용하여 키를 가져옵니다.
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Linux 배포에 따라 소스 목록 파일을 만듭니다. 데비안에 따라 소스 목록을 추가했습니다.
echo 'deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main' | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
업데이트 명령 실행
sudo apt-get update
이제 아래 명령을 사용하여 MongoDB를 설치하십시오.
sudo apt-get install -y mongodb-org
설치가 성공하면 아래 명령을 사용하여 MongoDB를 시작합니다.
sudo systemctl start mongod
아래 명령을 사용하여 MongoDB의 상태를 확인하십시오.
sudo systemctl status mongod
이제 아래에 표시된 명령을 실행하여 시스템 재부팅시 mongod가 자동으로 시작되는지 확인하십시오.
sudo systemctl enable mongod
이제 mongo 클라이언트를 사용하여 MongoDB 서버에 연결할 수 있는지 확인하십시오.
mongo
mongo 셸에서 help 및 show dbs 명령을 사용해보십시오.
Flask 앱 만들기
아래 명령을 사용하여 flask-appbuilder 및 mongoengine을 설치합니다.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
아래 코드 스 니펫에 주석으로 표시된 값을 사용하여 스켈레톤 앱을 만듭니다.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
아래에 주어진 것과 유사한 출력이 표시됩니다.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) (SQLAlchemy): MongoEngine Downloaded the skeleton app, good coding!
프로젝트와 앱의 레이아웃을 살펴보십시오. 아래에 트리 명령의 출력이 표시되었습니다.
Flask 구성 파일을 살펴 보겠습니다. 마지막 명령의 결과로 생성 된 기본 구성입니다. 주석 해제 사이보그 테마는 아래와 같습니다.
# Theme configuration for Cybord=g # these themes are located on static/appbuilder/css/themes # We can create our own and easily use them by placing them on the same dir structure to override #APP_THEME = 'bootstrap-theme.css' # default bootstrap #APP_THEME = 'cerulean.css' # cerulean #APP_THEME = 'amelia.css' # amelia theme #APP_THEME = 'cosmo.css' # cosmo theme APP_THEME = 'cyborg.css' # cyborg theme #APP_THEME = 'flatly.css' # flatly theme
스켈레톤 앱을 실행하려면 터미널에서 아래 제공된 명령을 사용하십시오.
flask run
Flask Hello World
flaskTutorialApp에서 첫 번째 프로그램을 만들려면 app 디렉터리에서 views.py 파일을 열고 다음 코드를 추가합니다. 파일에 제공된 import 문을 찾으십시오. 아직없는 경우이 문을 추가하십시오.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): ''' This first view of the tutorial ''' route_base = '/hello' @expose('/') def hello(self): return 'Hello, World! from Software Testing Help' # at the end of the file appbuilder.add_view_no_menu(HelloWorld())
위의 소스 코드를 추가 한 후 파일을 저장하십시오. 프로젝트의 루트 디렉터리로 이동하고 아래 명령을 사용하여 Flask의 개발 서버를 실행합니다.
flask run
이제 http : // localhost : 5000 / hello /로 이동하여 브라우저에서 출력을 확인합니다.
디버깅
현재 개발 서버는 디버그 모드에서 실행되지 않습니다. 디버깅 모드가 없으면 Flask 애플리케이션의 소스 코드에서 오류를 찾기가 어렵습니다.
Flask의 디버그 모드 결과는 다음과 같습니다.
- 디버그 모드는 자동 리 로더를 활성화합니다. 이는 애플리케이션의 소스 코드를 변경 한 후 개발 서버를 다시 시작할 필요가 없음을 의미합니다.
- 디버그 모드는 Python 디버거를 활성화합니다. Exception 동안 변수 값을 검사 할 수 있습니다.
- 디버그 모드는 Flask 애플리케이션 디버깅을 활성화합니다. 디버깅 세션에서 다양한 변수의 값을 확인할 수 있습니다.
이미 실행중인 개발 서버를 중지합니다. CTRL + C 또는 키보드 인터럽트를 사용하여 동일한 작업을 수행 할 수 있습니다.
다음 코드를 사용하여 디버그 모드를 활성화하고 개발 서버를 임시로 실행합니다.
FLASK_ENV=development flask run
콘솔에서 Debugger PIN을 검색하고 기록해 둡니다.
이제 위의 작성된 HelloWorld 뷰를 다음 코드 스 니펫으로 변경해 보겠습니다. 사용자 지정 예외가 도입되었습니다.
@expose('/') def hello(self): raise Exception('A custom exception to learn DEBUG Mode') return 'Hello, World! from Software Testing Help'
http : // localhost : 5000 / hello /로 이동하면 응용 프로그램에서 예외가 발생했음을 알 수 있습니다. 브라우저는 아래와 같이 스택 추적을 표시합니다.
또한 개발 서버가 실행중인 콘솔을 살펴보십시오. 이번에는 views.py의 변경 사항이 자동으로 감지되고 디버그 서버가 자체적으로 다시 시작되는 것을 알 수 있습니다. 이제 수동으로 다시 시작할 필요가 없습니다.
콘솔에는 아래와 같이 줄이 있습니다. 나중에 사용할 수 있도록 디버그 PIN을 기록해 두어야합니다.
* Detected change in 'https://cdn.softwaretestinghelp.com/work/sth/flaskTutorialApp/app/views.py', reloading 2020-06-02 14:59:49,354:INFO:werkzeug: * Detected change in 'https://cdn.softwaretestinghelp.com/work/sth/flaskTutorialApp/app/views.py', reloading * Restarting with stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restarting with stat * Debugger is active! * Debugger PIN: 150-849-897
이제 브라우저에서 스택 추적을 확인하고 마지막 줄로 이동하십시오. 클릭하여보기를 확장하고 CLI 아이콘을 클릭하여 대화 형 모드로 셸을 엽니 다.
열면 브라우저에 디버그 PIN에 대한 프롬프트가 표시됩니다. 디버그 PIN을 제공하고 확인을 클릭하십시오.
디버그 PIN을 제공 한 후 계속 진행하면 대화 형 셸에 액세스 할 수 있습니다.
브라우저 내에서 쉘에 액세스하고 변수 값을 검사하여 예외의 원인을 찾고 더 나은 방법으로 오류를 처리 할 수 있습니다. 아래 이미지에 표시된 예 중 하나를 살펴보십시오.
이제 아래와 같이 view.py에서 코드를 변경하십시오. Exception이 발생한 줄에 주석을 달았습니다.
@expose('/') def hello(self): # raise Exception('A custom exception to learn DEBUG Mode') return 'Hello, World! from Software Testing Help'
Flask 애플리케이션 테스트
이제 개발중인 Flask 애플리케이션에 대한 첫 번째 테스트를 작성해 보겠습니다. 먼저 PyTest를 설치하십시오. PyTest는 테스트 프레임 워크입니다. 더 나은 코드를 작성하는 데 도움이됩니다.
또한 애플리케이션을 개발하는 동안 단위 테스트를 작성할 수 있기 때문에 TDD 방식을 따를 수 있습니다. TDD는 Test-Driven Development를 의미합니다. 이 시리즈의 후속 튜토리얼에서는 항상 테스트를 먼저 작성하고 뷰 또는 모델을 개발합니다.
PyTest 설치
pip install pytest
이제 앱 디렉터리 내에 tests라는 디렉터리를 만들고 여기에 test_hello.py라는 파일을 만듭니다. 뷰를 테스트하기 위해 첫 번째 단위 테스트를 작성해 보겠습니다.
다음 코드 스 니펫을 복사하여 test_hello.py에 붙여 넣습니다.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): ''' A pytest fixture for test client ''' appbuilder.app.config('TESTING') = True with appbuilder.app.test_client() as client: yield client def test_hello(client): ''' A test method to test view hello ''' resp = client.get('/hello', follow_redirects=True) assert 200 == resp.status_code
아래 pytest 명령을 사용하여 테스트를 실행하십시오. PyTest는 자동으로 테스트를 수집하고 결과를 표준 출력에 표시합니다.
GitHub 워크 플로 만들기
Git 작업을 사용하여 샘플 애플리케이션에 대한 CI / CD 워크 플로를 만듭니다. 프로젝트에 대해 아래에 언급 된 단계를 따르십시오.
1 단계 : GitHub의 저장소 페이지로 이동합니다. Git Actions를 클릭하십시오.
2 단계 : 페이지에서 아래로 스크롤하여 Python 패키지에 대한 기존 워크 플로 템플릿을 찾습니다.
3 단계 : Python 패키지 워크 플로를 설정합니다.
4 단계 : python-package.yml 워크 플로 구성이 열리면 지정된 yaml 추가 태그 값에 따라 업데이트합니다.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: (3.7, 3.8) mongodb-version: (4.2) steps: - name: Start MongoDB uses: supercharge/mongodb-github-action@1.3.0 with: mongodb-version: ${{ matrix.mongodb-version }} # other values
최신 Ubuntu Linux 배포판에서 Flask 애플리케이션을 테스트하려고합니다. OS 외에도 Python 3.7 및 Python 3.8 만 사용하여 테스트를 실행하려고합니다.
5 단계 : 업데이트 된 값으로 python-package.yml을 커밋합니다.
스크럼 팀이 제공하는 비즈니스 가치에 대한 책임이있는 사람
6 단계 : 이전 페이지의 커밋은 GitActions 작업으로 이동합니다.
7 단계 : (선택 과목)
샘플 튜토리얼 앱의 Github 작업 페이지에서 배지를 생성하고 빌드 상태를 표시하기 위해 README.md 파일에 배치 할 수 있습니다.
이제 변경 사항이 마스터 브랜치에 커밋 될 때마다 python-package.yml에 작성된대로 Git 워크 플로가 따르고 Git 작업에서 실행됩니다.
결론
이 자습서에서는 전제 조건부터 Python 기반 웹 개발 프레임 워크 인 Flask를 사용하여 개발 된 웹 애플리케이션에 대한 CI / CD 워크 플로 설정에 이르기까지 모든 기본 개념을 다뤘습니다.
이 튜토리얼은 Python을 사용하여 웹 개발을 시작하기 위해 Python 설치, Flask 다운로드 및 설치, Flask-Appbuilder 작업, PyTest로 테스트 등과 같은 필요한 모든 단계를 다룹니다. 웹 개발 커뮤니티는 일반적으로 Flask를 Django라는 다른 인기있는 Python 웹 개발 프레임 워크와 비교합니다.
이러한 차이점을 설명하고이 시리즈의 자습서 중 하나에서 이러한 프레임 워크를 비교합니다.