Jinja Templating 개요 - 77
·
Develop/FastAPI
1. Jinja란? 빠르고 표현력이 풍부하며 확장 가능한 템플릿 언어 Dom에서 Pythn과 유사하게 코드를 작성할 수 있다. 템플릿은 최종 문서 내에서 렌더링할 데이터를 전달한다. 모든 텍스트 기반 형식(HTML, XML, CSV, LaTeX 등)을 생성 가능. 2. Jinja 표현식 {% ... %} if, for문 등에 대한 표현식 {{ ... }} 템플릿 출력으로 인쇄할 표현식 {# ... #} 템플릿 출력에 포함되지 않는 표현식 3. Jinja Tag & Scripts 장점 Jinja 태그는 HTML과 유사한 태그를 사용하여 백엔드 데이터를 사용하면서 개발자에게 도움을 준다. 전체 목록을 프론트 엔드로 전달하고 템플릿에서 간단한 for문으로 각각 데이터를 받을 수 있다. ex) python 파일..
FastAPI 프로젝트 진행(bootstrap, js 파일 추가) - 76
·
Develop/FastAPI
프로젝트 디렉터리 구조 fastapi todoapp main.py database.py models.py todos.db templates static routers todo css js home.html base.css bootstrap.css bootstrap.js jquery-slim.js popper.js auth.py todos.py bootstrap 파일 추가, javascript 파일 추가 1. base.css 수정 body { background: #fafafa; color: #33333a; padding-top: 70px; } h1, h2, h3, h4, h5, h6 { color: #323232; } .main-color { background-color: #0e76a8 ; } .str..
FastAPI 프로젝트 진행(CSS 및 static 폴더 구성) - 75
·
Develop/FastAPI
프로젝트 디렉터리 구조fastapitodoappmain.pydatabase.pymodels.pytodos.dbtemplatesstaticrouterstodocssjshome.htmlbase.css auth.pytodos.py 템플릿에 CSS를 추가, static 폴더 구성static 폴더js, css, image, font 등과 같이 개발자가 사전에 미리 서버에 저장해둔 파일들 모음집내용이 고정되어 응답을 할 때 별도의 처리 없이 파일 내용을 그대로 보내주면 되는 정적인 파일 모음집 1. todoapp 디렉터리 하위에 static 디렉터리 생성 2. static 디렉터리 하위에 css, js 디렉터리 생성 3. css 디렉터리 하위에 base.css 생성h1 { color: red;}       4..
FastAPI 프로젝트 진행(시작, HTML 렌더링) - 74
·
Develop/FastAPI
프로젝트 디렉터리 구조fastapitodoappmain.pydatabase.pymodels.pytodos.dbtemplatesroutershome.htmlauth.pytodos.py 템플릿 디렉터리 가져오기, HTML 파일 렌더링      1. todoapp 디렉터리 하위에 templates 디렉터리 생성2. templates 디렉터리 하위에 home.html 생성 Welcome to this FastAPI course!   3. 라이브러리 설치aiofilesFile Input/Output를 비동기로 할 수 있는 라이브러리 jinja2python에서 가장 많이 사용되는 템플릿 엔진※템플릿 엔진- 파이썬 문법(조건, 반복문, 변수)을 간략한 표현으로 데이터를 가공하여 웹페이지에 보임- 서버에서 받아온 데이..
FastAPI Alembic 추가 실습하기 - 73
·
Develop/FastAPI
사용자를 등록할 때 전화번호를 필수 열로 만든다. apt_num의 열을 생성한다. model에 apt_num열을 Optional로 생성한다. 1. auth.py 수정 #phone_number 열 추가 class CreateUser(BaseModel): username: str email: Optional[str] first_name: str last_name: str password: str phone_number: Optional[str] #phone_number 열 추가 @router.post("/create/user") async def create_new_user(create_user: CreateUser, db: Session = Depends(get_db)): create_user_model ..
FastAPI 테이블 관계 형성하기- 72
·
Develop/FastAPI
Alembic이 아닌 코드 자체에서 Foreign key 설정 1. models.py 수정 from sqlalchemy import Boolean, Column, Integer, String, ForeignKey from database import Base from sqlalchemy.orm import relationship class Users(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) email = Column(String, unique=True, index=True) username = Column(String, unique=True, index=True) first_name = Column(..
FastAPI Alembic new 테이블 및 외래키 생성(Upgrade / Downgrade) - 71
·
Develop/FastAPI
alembic을 통한 address 테이블 생성 및 외래키 설정을 위한 칼럼 추가 1. 테이블 추가를 위한 새로운 버전 생성 2. 버전의 upgrade / downgrade 함수 수정 def upgrade(): op.create_table('address', sa.Column('id', sa.Integer(), nullable=False, primary_key=True), sa.Column('address1', sa.String(), nullable=False), sa.Column('address2', sa.String(), nullable=False), sa.Column('city', sa.String(), nullable=False), sa.Column('state', sa.String(), null..
FastAPI What is Alembic(upgrade/ downgrade 실습) - 70
·
Develop/FastAPI
Alembic 정의 Spring에서 Flyway가 있다면 Python(FastAPI)에서는 Alembic이 DB 마이그레이션 버전 관리를 제공한다. SQLAlchemy를 사용할 때 경량화된 DB 마이그레이션 툴이다. 역할 - Scripts로 migration 환경을 생성 - Migration 테이블을 통해 어디까지 마이그레이션이 되었는지 확인 - 데이터베이스를 실시간으로 수정 및 변경 사항을 추적할 수 있다. - 중복 마이그레이션 및 버전 관리(다운그레이드 및 롤백도 가능) Alembic 명령어 및 파일 소개 Alembic 명령어 No. Command Details 1 alembic init 작성한 폴더명으로 alembic 정보(마이그레이션 환경)가 담길 폴더가 생성 2 alembic revision -..
FastAPI Routing 실습 - 69
·
Develop/FastAPI
실습 문제 1. routers 디렉터리에 users.py 생성 2. users.py 특정 사용자 호출(path parameter) API: GET 3. users.py 특정 사용자 호출(query parameter) API: GET 4. users.py JWT를 생성해서 해당 사용자 암호 업데이트 API: PUT 5. users.py JWT를 생성해서 해당 사용자 삭제 API: DELETE 실습 풀이 프로젝트 구조 TodoApp main.py database.py models.py TodoApp/routers TodoApp/company auth.py users.py todos.py companyapis.py dependencies.py 1. 라이브러리 및 DB 연결 그리고 에러 함수 생성 from fa..
FastAPI Dependencies 라우팅 - 68
·
Develop/FastAPI
Authentication Routing / Todo Routing / Prefix Routing / External Routing / Dependencies Routing 1. 라우팅 역할 애플리케이션의 구조를 위한 유연한 도구 확장 가능 한 아키텍처를 지원 파일 구조화를 도움 2. 구성할 프로젝트 구조 TodoApp main.py database.py models.py TodoApp/routers TodoApp/company auth.py todos.py companyapis.py dependencies.py Dependencies 라우팅 company 디렉터리 하위에 dependencies.py 생성 dependencies.py 파일 수정 from fastapi import Header, HTTPE..