본문 바로가기

FastAPI

로또 번호 맞추기(FastAPI) 1. 개요: 가장 최근까지 1등 당첨번호들을 수집하여, 가장 당첨번호에 많이 포함되었던 당첨 빈도수가 높은 번호들을 자기가 원하는 갯수만큼 지정하고(6개에서 45개까지 가능함), 그 중에서 당첨 예상번호 6개를 무작위로 추출하는 방식임(예를 들자면, 사용자가 가장 당첨빈도수가 높은 번호 10개를 지정했을때, 그 10개가 다음의 숫자가 가장 당첨빈도수가 높은 10개라고 한다면(예, 1,10,24,22,16, 32,18,21,16, 8), 이 10개의 숫자를 무작위로 돌려 6개의 당첨번호를 예측하는 프로그램 로직이다.) 2. 매주 당첨번호 업데이트: 가장 최근의 당첨번호를 업데이트 하는 것은 스케줄러를 등록하여, 매주 토요일 밤 자정에 업데이트하도록 하였다.# Project_folder/app/lotto.. 더보기
ArticleComment CURD(fastAPI+Javascript+Jinja) 1. Article에 대한 Comment와 그 Comment에 대한 Reply를 구현하였다. Comment와 Reply는 각각 모델을 만들지 않고, 하나의 ArticleComment를 이용하였고, Reply가 달린 Comment의 ID를 Reply에 paired_comment_id로 기입하여 ORM을 형성하게 하였다.2. 게시글에 질문이나 댓글, 질문이나 댓글에 답글(대댓글)을 달 때, quills 에디터의 최소 설정(Minimal settings)을 적용하였고, 자바스크립트로 quills에디터를 붙였다가 띠었다가 하는 과정(동시에 두개의 에디터카 열려있지 않도록)이 정확하게 구현되도록 하였다.3. vote(좋아요) 기능 구현: model로 구현하지 않고, many-to-many 테이블만 만들어 간단하게.. 더보기
Article CURD(fastAPI+Javascript+Jinja) 현재 해놓은 것들 1. User 가입관련인증코드로 회원가입인증코드로 비번분실시 비밀번호 재설정로그인 후 인증코드로 이메일 변경로그인 후 닉네임(username)변경로그인 후 프로필 이미지 변경로그인 후 비밀번호 변경회원탈퇴2. 자바스크립트로 fastAPI POST/PATCH/DELETE 공통함수 만들어 모듈화하고, User CURD에 적용하기위의 회원CURD 관련 된 것들을 바닐라 자바스크립트로 모두 만들기3. 사용자(User) 관련 자바스크립트 모듈화 하기custom/accounts/ authCodeFastAPI.jsauthCodeRequired.jslogin.jslogout.jsupdate.jsupdateFastAPI.jswithdraw.jsmain.jsfastapiClient.js4. 게시글(Art.. 더보기
User CURD(fastAPI+Javascript+Jinja) # Project_folder/main.pyfrom app.core.inits import initialize_appapp = initialize_app() # Project_folder/app/apis/accounts.pyimport osimport uuidfrom typing import Optionalfrom fastapi import APIRouter, status, Depends, Response, Request, HTTPException, Form, UploadFile, Filefrom fastapi.encoders import jsonable_encoderfrom fastapi.responses import JSONResponsefrom fastapi_mail import MessageSch.. 더보기
FastAPI + Jinja Template (DB, Redis Setting) # Project_folder/app/core/inits.py updatefrom contextlib import asynccontextmanagerimport redisfrom fastapi import FastAPIfrom fastapi.staticfiles import StaticFilesfrom fastapi.middleware.cors import CORSMiddlewarefrom fastapi_csrf_jinja.middleware import FastAPICSRFJinjaMiddlewarefrom app.core.settings import STATIC_DIR, MEDIA_DIR, CONFIG, templatesfrom app.core.database import ASYNC_ENGINEfro.. 더보기
FastAPI + Jinja Templates 기반 APP개발 시작 # Project_folder/main.pyfrom app.core.inits import initialize_appapp = initialize_app() # Project_folder/app/core/inits.pyfrom fastapi import FastAPIfrom fastapi.staticfiles import StaticFilesfrom fastapi.middleware.cors import CORSMiddlewarefrom fastapi_csrf_jinja.middleware import FastAPICSRFJinjaMiddlewarefrom app.core.settings import STATIC_DIR, MEDIA_DIR, CONFIGfrom app.views import indexde.. 더보기
User model 생성 및 첫 DB migrations I. database.py에 BaseModel 추가class BaseModel(Base): __abstract__ = True id: Mapped[int] = mapped_column(Integer, primary_key=True, index=True) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, default=lambda: datetime.now(timezone.utc)) updated_at: Mapped.. 더보기
DB 서버와 Redis 서버 설정 및 연결/프론트엔드 렌더링 I. DB(MySQL) 설정 및 연결1. 필요한 라이브러리들을 설치한다. 2. MySQL워크 벤치에서 DATABASE 생성할 때 아래처럼 생성한다. Default Charset : utf8mb4 Default Collation : utf8mb4_0900_ai_ci3. Svelte_0.0.1/app/core/database.py를 생성하고 작성 비동기적 서버운영을 위해, ASYNC_ENGINE = create_async_engine...과 AsyncSessionLocal = async_sessionmaker... 를 작성해야 한다.### mysql 비동기적으로 사용하기 위한 라이브러리들 #####pip install sqlalchemypip install aiomysql .. 더보기