가상환경 설정을 해준 뒤 pip install Flask-SQLAlchemy 와 pip install Flask-Login 이라는 명령어를 입력해줍니다. - (ORM 사용할 것이므로)
ORM이란?
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말합니다
객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간불일치가 존재하게 됩니다. 이때 ORM를 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 이 불일치 문제를 해결 할 수 있습니다
즉 SQL 질의어의 사용없이 객체를 통해 간접적으로 데이터베이스를 다룬다는 것 입니다.
blog 패키지 폴더 안에 있는 __init__.py 에 아래의 내용을 입력해줍니다
init에서 만들어준 create_app 함수를 통해 app.py에서 불러와 사용해 주었습니다.
Blue Print
라우팅이 많아질 경우 create_app은 점점 복잡해지게 되는데 이러한 문제를 해결하기 위해 사용하는 방식
(실습)
기존 __init__파일 안에있는 route()를 지워주었다. 대신
로그인 로그아웃 등의 로그인 관련 기능만을 모아 처리하는 auth.py 파일과
홈페이지, 자기소개 페이지, 포스트 생성, 삭제, 조회, 리스트 페이지 등을 처리하는 views.py 파일로 나누어 세분화 해 주었다.
from flask import Blueprint
views = Blueprint("views", __name__)
@views.route("/")
def blog_home():
return "This is My Blog home."
@views.route("/about_me")
def about_me():
return "Let me Introduce myself"
views 파일에 해당 내용들을 적어준 뒤 만들어둔 Blueprint를 __init__.py에 등록하면 된다.
이렇게 등록해주었다.
이 후 다시 app.py를 실행해보면
url_prefix = "/blog" 코드로 /blog에 후행 슬래시가 붙어도 수행된다. /about_me를 뒤에 적으면 about_me() 함수가 수행된다.
render_template()
지금까지는 html 형식을 리턴하는 방법을 사용했으나 이는 좋지 않은 표기이다. 따라서 Flask 프레임워크는 Jinja2 템플릿 엔진을 기본으로 사용하며 jinja2 를 사용하면 render_template() 함수를 이용하여 HTML을 렌더링 할 수 있게 된다.
jinja2는 간단하게 말해 어떤 파일, 실재하는 파일에 어떤 변수들을 집어넣어 약간 변형시킨 뒤 html로 만들어주는 엔진 같은 것이라고 할 수 있다.
(실습)
auth 와 views 모두render_template를 import 해줍니다.
blog 패키지 아래 templates 디렉토리를 만들고 home.html 파일을 생성해줍니다.
view 파일의 return으로 render_template("home.html")을 주어 우리가 만든 html 파일을 불러오게 합니다
결과
+ context 인자 사용해보기
view 파일을 수정해준다
html 파일에 중괄호 2개는 jinja2 탬플릿 엔진이 변수로 인식하고 전달된 context 값에서 적절한 값을 찾아 렌더링하게 된다!
'Python > FLASK' 카테고리의 다른 글
간단한 HTTP API 구축해보기 (0) | 2022.08.24 |
---|---|
4장 - 블로그 만들기 회원가입/로그인/로그아웃 (0) | 2022.07.24 |
파이썬 FLASK - Python DB (0) | 2022.07.10 |
파이썬 FLASK - 라우터, 변수 규칙, 후행 슬래시 (0) | 2022.07.10 |
FLASK - 1번째 과제 (0) | 2022.07.03 |