본문 바로가기
IT실습공부/기타

파이참 설치 + 파이선 설치 + wsl 터미널에서 flask 워크프레임 환경으로 웹 페이지를 작성해보자

by 육지상어 2021. 1. 2.
728x90
반응형

flask run 중

 

갑작스례 파이썬 백엔드 환경에서 할일이 생겼다.

python3.8 이상+ virtualenv 환경
플라스크 -> pip
sql alchemy - >pip
sql lite -> apt get
postman

-> 회원가입 백엔드
id , pw , 이름 -> 로그인 성공 msg


목표는 위와 같다.

일단 윈도 + 윈도 우분투환경에서 파이썬 3.8 이상 버전을 설치한다.
윈도에선 공식 홈페이지에서 설치.

우분투환경에선 2.7버전이 설치되어있을 것임으로

sudo apt-get update
sudo apt-get install python3
sudo apt-get upgrade python3

명령어를 사용하여 기본 터미널에서 파이썬 버전을 업해주자.

윈도에선 3.91버전
우분투에선 python --version 이 3.85 버전으로 표기된다.

그다음은 전용 IDE인 파이참을 설치해준다.

목표는 플라스크라는 워크프레임을 설치한 후,
sql lite로 간단한 파일 DB 생성, sql alchemy로 쿼리 명령어
포스트맨으로 데이터 전송을 test 해볼 예정이다.

d/python/venvs 생성 후,
pip3 install --upgrade pip를 업데이트한다.
pip3 install virtualenv 가상환경을 설치한다.
그 후 virtualenv myproject 이렇게 가상환경을 만들어준다.
myproject/bin 들어간 후, source ./activate를 실행해보자.
python -m pip install --upgrade pip로 pip를 업데이트 해주자.

pip list 을 사용해서 설치 리스트 출력을 확인해보자.
그리고 pip freeze로 패키지 설치 리스트를 관리할 수 있다.
pip freeze > requirements.txt 후 추후 리스트들을 한번에 설치할수있다.

deactivate로 가상 환경을 끊을 수 있다.

이제 다시 파이참으로 들어가서, 가상환경 인터프리터를 설정해야한다.
파일 위치를 d:/python/venvs/로 열고,
file setting interpretrer -> add -> exising environment -> D:\python\venvs\venv\Scripts\python.exe 로 생성된 가상환경으로 설정한다.

소스코드 pybo.py를 만들고,
아래와 같은 코드를 넣는다.

from flask import Flask
app = Flask(name)

@app.route('/')
def hello_pybo():
return 'Hello,pybo!'


app = Flask(name)은 플라스크 애플리케이션을 생성하는 코드다. 이 코드에서 name이라는 변수에는 모듈명이 담긴다. 즉, 이 파일이 실행되면 pybo.py라는 모듈이 실행되는 것이므로 name 변수에는 ‘pybo’라는 문자열이 담긴다. @app.route는 특정 주소에 접속하면 바로 다음 줄에 있는 함수를 호출하는 플라스크의 데코레이터다.

데코레이터(decorator)란 기존 함수를 변경하지 않고 추가 기능을 덧붙일 수 있도록 해주는 함수를 의미한다. 좀 더 자세한 내용을 알고 싶다면 wikidocs.net/83687 을 참고하자.

저 py를 만든 후, flask run을 실행하면 동작되지 않는다. 파일명 app.py가 디폴트 플라스크 어플리케이션 명이기 때문에.
set FLASK_APP=pybo <- 이렇게 변경해준다. (윈도)
export FLASK_APP=pybo.py (리눅스)로 변경 후,
해당 디렉토리에서 flask run이나 혹은 python.py로 실행한다. (웹서버 구동)

웹서버 구동을 확인했다면, 플라스크 프로젝트의 기본 형태의 파일을 정리해준다.(구조)

├── pybo/
│ ├─ init.py
│ ├─ models.py
│ ├─ forms.py
│ ├─ views/
│ │ └─ main_views.py
│ ├─ static/
│ │ └─ style.css
│ └─ templates/
│ └─ index.html
└── config.py

이런 형식으로 되어있다. https://wikidocs.net/81044 <- 출처

models.py -> db관련 파일, 파이썬 db 관련 sql alchemy 사용 모델 기반이다. 모델 클래스들을 정의한다고 한다.
forms.py-> 서버로 전송된 폼을 처리하는 파일이다. 백엔드 api이다.
WTGfroms라는 라이브러리를 사용한다. 모델 기반이라고 한다.
views -> 화면을 구성하는 views 폴더이다. 스타일 관련을 제외한 웹 프론트이다.
여러 뷰 파일이다.
static -> 스타일이나 js 이미지 파일이다.
templates -> 는 html 등의 파일이다.
config.py이다. 환경변수 , db설정 등을 보여준다.

일단 파이보 폴더를 만들어 export FLASK_APP=pybo 폴더로 설정하고,
안에 init.py로 변경해보자.

mkdir pybo
mv ./pybo.py pybo/init.py

그럼 내부에 있는 init.py로 실행된다.
def create_app():
app = Flask(name)

@app.route('/')
def hello_pybo():
    return 'Hello, Pybo!'

return app

내부를 create_app 함수로 변경해준다. 이는 플라스크에서 정의해준 함수명이다.

블루프린트 클래스를 추가하자. / 애너테이션안에 매핑되는 함수들을 라우터라고 한단다. 새로운 url이 생길 때마다 create_app 안에 계속 매핑을 해줘야하는 불편함이 있어 이를 해소하기위해 블루프린트라는것으로 관리한다.

블프는 이름, 모듈명, 프리픽스값을 전달해야한다. 프리픽스값는 접두어 url을 정할 때 사용된다.

from .views import main_views
app.register_blueprint(main_views.bp)

init.py의 헬로 파이보를 삭제 후, 뷰의 메인 뷰에서, 앱 블루프린트를 등록한다.

이제 url을 등록하고 라우트 함수를 사용하자.
그 후, 타이핑만 제대로 되면 상관없지만, 잘 안된다면 아래와 같이 써서 플라스크 환경을 잡아주도록 하자.

export FLASK_ENV=development

그후 flask run 후, 접속해보고 /hello or /로 접속하면 메시지가 제대로 출력되는지 알 수 있다.

참고 및 출처 : https://wikidocs.net/81045

반응형

댓글