본문 바로가기

Python/Flask9

Jinja2 and Werkzeug? Flask 는 두 개의 외부 라이브러리인 Jinja2 템플릿 엔진과 Werkzeug WSGI 툴킷을 사용한다. jinja2 특정 문법을 사용하여 해당 문서들의 필요한 부분을 웹 브라우저가 인식할 수 있는 html 로 변환시켜주는 역할을 수행한다. (즉 Data + Template = HTML) 그밖에도 샌드박스 실행 및 선택적 오토 이스케이프를 추가하므로 보안성도 높이게 됩니다. 플라스크에선 render_template() 함수를 사용하여 진자2의 문법을 사용하여 html을 작성해준 파일을 넘겨주는 형식으로 사용한다. https://jinja.palletsprojects.com/en/3.1.x/ Jinja — Jinja Documentation (3.1.x) jinja.palletsprojects.com.. 2024. 3. 4.
flask 웹개발 기초 정리 - 3 (feat. SQLAlchemy) SQLAlchemy 계속 ORM Query 전 게시글에서 다뤘듯이 클래스명으로 쿼리에 접근하거나 세션으로 쿼리를 접근하든, 아래의 쿼리 실행문은 동일한 결과를 도출한다. Class.query.filter... db_session.query(Class).filter... filter 를 줄 때 변수명 앞에 : 을 사용하여 아래처럼 문자열 SQL 조건문을 작성해줄 수 있다. User.query.filter("id < :val").params(val=10) :변수명 형태로 사용하여 params 메서드에 인자로 받고 값을 대입해줄 수 있다. filter 와 filter_by 둘의 쓰임새는 조건문을 처리해주는 것이다. 다만 filter 메서드는 인자로 Column 객체나 표현식을 받아서 처리해줘야 하지만 filt.. 2024. 2. 28.
flask 웹개발 기초 정리 - 2 (feat. SQLAlchemy) SQLAlchemy RDBMS ORM(Object Relational Mapping) 으로, DBMS의 데이터베이스 구조를 파이썬의 클래스(객체)화 시키는 라이브러리이다. 객체 지향적인 코드, 즉 SQL문 대신 클래스처럼 사용할 수 있게 도와준다. 특히 DBMS 종속성이 줄어든다는 장점이 존재한다. 다만 ORM만으로 서비스 구현이 어렵다는 점과 프로시저가 많으면 장점이 무색해진다는 단점도 있다. https://www.sqlalchemy.org/ SQLAlchemy The Database Toolkit for Python www.sqlalchemy.org ORM (Object Relational Mapping) 직관적으로 해석하자면 객체 관계 맵핑을 의미한다. 즉 객체와 관계형 데이터베이스를 자동으로 연결.. 2024. 2. 27.
flask 웹개발 기초 정리 - 1 https://youtu.be/u2KnTZa1_WU?si=r8kwQJOQ2ysXKxxs 플라스크의 기본 쓰임새는 알지만~ 막상 프로젝트를 만드려고보니 막막해서 강의를 볼 필요성을 느꼈다. 위의 강의를 참고하여 정리했다. MVC 패턴 Model, View, Controller 플라스크에선 Model은 데이터 모델, View의 경우 templates 에 해당하는 웹 페이지, Controller 는 Router(Route) 에 해당한다. __init__.py 모듈의 시작점, 파이썬의 생성자에 해당 Flask Context 플라스크는 다른 웹 프레임워크와 달리 controller 의 매개변수로 request 를 받지 않음을 알 수 있다. 그럼 해당 router 에서 발생한 요청을 어떻게 처리하게 될까? 이를 위.. 2024. 2. 26.