일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- java설치
- Hooks
- node.js
- 리액트
- 관계형데이터베이스
- Flexbox Froggy
- Flex Box 기본
- 자바 스프링
- spring 환경설정
- 플랙스박스기본
- 오산대맛집
- 스프링
- ubuntu
- spring
- HTML5
- REACT
- Eclipse
- SQL 연산자
- 노마드코더
- 객체지향프로그래밍
- java spring
- 환경설정
- SQL
- 자바스프링
- 이클립스
- SQL 문제
- 람다식
- SQL 명령어
- numpy
- 타입
- Today
- Total
이것저것
(1) Pycharm에서 Flask 사용하기 본문
우선 pycharm에 anaconda 가상환경을 만드는 것부터 시작했다.
해당 글을 참고해서 작업했다.
이렇게 anaconda로 DMS라는 가상환경을 만들어줬다.
그리고 C:/dev/Python/DMS라는 폴더도 만들어줬다.
가장먼저 해야할것은 pip를 최신화 하면서 설치한다.
python -m pip install --upgrade pip
pip install flask
터미널에 pip를 설치하고 업데이트하고
그다음에 flask도 설치한다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_pybo():
return 'Hello, Pybo!'
먼저 pybo.py라는 파일을 만든뒤
flask의 기본적인 코드를 작성해준다.
원래는 pybo.py 대신에 app.py가 기본적인 폴더이고 app.py라고 아래처럼 작성하면
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, Pybo!'
이렇게 작성하고 터미널에 run flask라고 작성하면 실행이될것이다.
대신에 여기서는 pybo.py로 바꿔주었기때문에 실행환경을 조금 바꿔줘야한다.
나는 프로젝트 명과 가상환경명을 dms로 설정했기때문에 run_dms.cmb라는 파일을 만들어서 디렉토리에 넣어줬다
(C:/dev/Python/DMS 안에 생성)
@echo off
cd c:/dev/Python/DMS
set FLASK_APP=pybo
set FLASK_DEBUG=true
call C:\Users\KOSA\anaconda3\envs\DMS\Lib\venv\scripts\nt\activate
flask run
FLASK_APP=pybo는 app.py 대신 pybo.py를 사용하겠다는것이다.
DEBUG는 오류가 발생했을때 디버깅 메세지를 브라우저에 출력해주겠다는 것이다.
그리고 call 부분은 가상환경이 설치된 폴더를 찾아서 activate.bat 파일을 찾아주면된다.
이렇게 파일을 만들고 터미널 창에
run_dms라고 작성하면 페이지를 열어서 아래와 같이 뜨는 것을 확인 할 수 있다.
애플리케이션 팩토리를 사용해서 app = Flask(__name__)를 전역으로 사용하였을때 발생하는 오류를 없애주자
먼저 pybo라는 디렉토리를 생성한다음에 pybo.py를 넣어주자
그리고 pybo.py 파일의 이름을 __init__.py로 변경해주자
from flask import Flask
# create_app함수가 app 객체를 생성해 반환하도록 하는 이유는
# app=Flask(__name__)을 전역으로 사용하게되면 오류가 발생하기 때문(순환 참조 오류)
# create_app이 '애플리케이션 팩토리'이다.
# create_app 대신 다른 이름을 사용하면 정상작동하지 않는다.
def create_app():
app = Flask(__name__)
@app.route('/')
def hello_pybo():
return "hello flask!"
return app
애플리케이션 팩토리를 사용하는 자세한 내용은 플라스크 공식 홈페이지에 나와있다고한다...
블루프린트를 사용해서 라우팅 함수를 체계적으로 관리하도록하자
블루프린트 작업 : Flask에서 URL과 함수의 매핑을 관리하기 위해 사용하는 도구이다.
__init__.py에 라우팅함수를 계속 쓰게되면 너무 길어지고 지져분해지게된다.
그래서 views라는 디렉토리에 main_views.py를 만들어서 관리를 하자
from flask import Flask
# create_app함수가 app 객체를 생성해 반환하도록 하는 이유는
# app=Flask(__name__)을 전역으로 사용하게되면 오류가 발생하기 때문(순환 참조 오류)
# create_app이 '애플리케이션 팩토리'이다.
# create_app 대신 다른 이름을 사용하면 정상작동하지 않는다.
def create_app():
app = Flask(__name__)
# 블루프린트 작업 : Flask에서 URL과 함수의 매핑을 관리하기 위해 사용하는 도구이다.
# 블루프린트를 이용하면 라우팅 함수를 체계적으로 관리할 수 있다.
from .views import main_views
app.register_blueprint(main_views.bp)
# @app.route('/')
# def hello_pybo():
# return "hello flask!"
return app
먼저 __init__.py 파일을 수정하자
.views에서 main_views를 불러오게한다.
from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/')
# 이 작업을 통해서 라우팅 함수는 main_views 파일에 작업하면된다.
@bp.route('/hello')
def hello_pybo():
return 'Hello, Pybo!'
@bp.route('/')
def index():
return 'Pybo index'
그리고 main_views.py를 살펴보자
처음 pybo.py와 거의 다를것은 없다.
대신에 Blueprint를 사용했고 run_dms로 실행을 하면 root 페이지와 뒤에 /hello 페이지에 출력되는 값이 달라진다.
'Python' 카테고리의 다른 글
(3) 모델 생성하기 (5) | 2023.11.23 |
---|---|
(2) pycharm에 mysql 불러오기 (2) | 2023.11.22 |
딥러닝 - 이미지 데이터 전처리 및 학습(2) (2) | 2023.11.02 |
딥러닝 - 이미지 데이터 전처리 및 학습(1) (0) | 2023.11.02 |
Anaconda 사용해서 python 사용하기 (2) | 2023.11.01 |