#파이썬 #python #flask #web #Jinja2
1.파이썬 flask 소개
파이썬 flask는 파이썬 언어를 사용하여 web페이지를 구성할 수 있게 해주는 프레임워크이다.
원래는 django가 많이 사용되었지만 flask는 더 빠르고 간결한 코드, 가벼운 구성으로 점유율을 높여 가고있다.
파이썬 flask는 마이크로 웹 프레임워크이다. 최소한의 구성 요소와 요구 사항을 제공하기 때문에 처음 코드를 이해하기가 쉽고 그 코드에서 확장을 해나가는 것 또한 쉽다. 따라서 자신이 필요한 기능이나 라이브러리를 자유롭게 구글링을 통해 검색 후 적용 가능하다.
2.파이썬 flask 설치 및 실행
flask는 파이썬의 라이브러리 중 하나이므로 프로젝트를 실행하기 앞서 디렉토리를 하나 만들어준다.
나의 경우 바탕화면에 pythonpipenv라는 폴더를 하나 생성해주었다.
나는 이 폴더 안에 앞서 포스팅했던 pipenv 가상환경을 구성하고 flask를 설치하고 추가로 필요한 패키지들을 설치할 것이다.
pipenv 가상환경을 구성하는 것은 앞선 포스팅을 참고하면 된다.
우선 cmd를 통해 내가 만들어놓은 디렉토리로 이동을 한다.
cd 디렉토리 주소
명령어를 통해 접근할 수 있다. 접근한 후
pipenv shell명령어를 통해 가상환경을 활성화해준다.
나는 flask를 사용해서 웹 개발을 할 것이므로
pipenv install flask명령어를 통해 가상환경에 flask를 설치해준다.
pipfile을 확인하게 되면 flask가 정상적으로 깔려있는 것을 확인할 수 있다. 저 위의 화면은 미리 깔아놓은 것일 뿐 처음부터 저 패키지들이 설치되어 있는 것은 아니다.
이 후 파이참이나 vscode를 이용해서 이 폴더를 열어준다. 나는 vscode를 사용하겠다.
파이썬 파일 app.py를 하나 만들어주고 그 곳에다 파이썬 언어를 이용해 코드를 작성할 것이다.
3.플라스크 Route 연결
flask기본 틀은 다음과 같다.
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)
이 때 route는 포트주소뒤 /다음 나타나는 url주소를 의미한다. 현재는 route('/')만 존재하므로 포트번호뒤에 /만 존재한 상태로 웹페이지가 표현될 것이다. 위의 코드를 저장한 뒤 cmd로 이동해서
python app.py명령어를 통해 실행시키면
위 사진의 마지막 줄에 위치한 URL로 이동하게 되면 다음과 같은 화면을 갖는 웹 페이지를 보여준다.
맨 위의 코드에서 @app.route는 부분은 포트번호 다음 출력될 url주소를 의미한다. 따라서 위의 코드 중
@app.route('/')부분을 @app.route('/hello')로 수정하면 다른 주소에서 웹페이지가 열린다.
4.flask로 템플릿 렌더링 후 url 연결하기
우선 template을 렌더링해주는 함수인 template_rendered을 import해준다.
그 후 html 템플릿들을 저장해 줄 templates라는 이름의 폴더를 현재 로컬 디렉토리에 생성해준다. (꼭 이름은 templates여야한다.)
templates를 생성했으면 그 안에 나타낼 html 파일 몇 개를 작성해주겠다. html 코드 편집기는 vscode를 사용해도 되고 atom같은 편집기를 이용해도 된다.
이 html파일에 작성된 웹페이지들을 flask를 통해 렌더링 후 url에 연결해보도록 하겠다.
vscode를 통해 몇 개의 route를 설정해주고 그 곳에 render_template 모듈을 이용해 html 파일을 렌더링하고 url에 연결해보겠다.
from flask import Flask, render_template app = Flask(__name__) @app.route('/hello') def home(): return 'Hello, World!' @app.route('/2') def second(): return 'second page' @app.route('/1') def index(): return render_template("1.html") @app.route('/base') def base(): return render_template("base.html") @app.route('/child') def child(): return render_template("child.html") if __name__ == '__main__': app.run(debug=True)/
총 3개의 html파일을 레더링 해주었다.
그렇다면 이 중 하나를 들어가서 url에 잘 연결되었는지 확인해보겠다.
미리 만들어 둔 1.html파일이 url을 통해 잘 작동하는 모습이다.
'파이썬' 카테고리의 다른 글
python - numpy(module) could not be resolved (0) | 2022.03.15 |
---|---|
파이썬 문법 2) (0) | 2021.06.18 |
파이썬 문법 1) (0) | 2021.06.18 |
pipenv 파이썬 가상환경 사용하기 (0) | 2021.06.18 |
댓글