Web/Django 38

장고 서버 배포 간단 요약

1. AWS에 새 인스턴스(서버 하나 빌리는것) 생성(key.pem 중요)2. mac은 터미널에서, window는 putty나 MobaXTerm(추천)으로 인스턴스에 접속3. 접속 했으면, 인스턴스에 원격 코드 가져오기 (github 쓰셨으면 git pull)4. sudo apt-get install build-essential libpq-dev -y =>  pip install -r requirements.txt 를 통해 필요한 라이브러리 설치5. config파일 생성해 키값들 복사 붙여넣기 ( cp config.py 내 레파지토리/내 프로젝트 명  # config.py 파일을 원하는 위치로 복사 )6. python3 manage.py migrate하기(makemigrations 명령은 배포 인스턴스에..

Web/Django 2024.10.04

장고 커서 페이지네이션

DRF의 내장 페이지네이션 클래스 구성하기DRF에는 PageNumberPagination, LimitOffsetPagination, CursorPagination 등이 있음.PageNumberPagination: 데이터를 일정 크기의 페이지로 나누고 클라이언트가 특정 페이지를 요청할 수 있게 함.LimitOffsetPagination: 클라이언트가 반환할 항목 수와 데이터 컬렉션 내에서 시작 지점을 지정할 수 있음.CursorPagination: 큰 데이터 세트에 대해 더 효율적인 커서 기반의 페이지네이션 시스템을 제공이러한 페이지네이션 클래스를 사용하려면 DRF 설정의 DEFAULT_PAGINATION_CLASS에 추가하고 페이지 크기를 지정해야 함.REST_FRAMEWORK = { 'DEFAUL..

Web/Django 2024.10.02

django admin 커스터마이징 시 유의점

장고 admin을 상속받아서 쓸 때마다, 거슬리는 First name, Last name.이 녀석들을 처리하기 위해,AbstractUser 대신 AbstractBaseUser라는 클래스를 상속받을 시에는 기존 (is_superuser, is_staff, is_active같은)특정 필드와 PermissionsMixin클래스 상속이 있어야 관리자 페이지에 접근 할 수 있음.class User(AbstractBaseUser, PermissionsMixin): username = models.CharField(max_length=50, unique=True) name = models.CharField(max_length=20) is_superuser = models.BooleanField(def..

Web/Django 2024.10.01

Django permissoin_classes (GET, POST 나누기)

Django DRF에서GET LIST하면 로그인 안해도 보여주고 싶고, 나머지 함수는 로그인 해야 작동하게 하고 싶은데....요런식으로 쓰면 함수 밑에다가 정의를 하든 어찌하든 다 로그인 후에 가능하게끔 설정이 된다.물론 함수를 일일이 나눠서 GET은 permission_classes를 빼놓고 해도 되지만,필자는 class안에서의 permission_classes를 부분적으로 주는 방법을 다뤄보려 한다. 장고 공식문서: https://www.django-rest-framework.org/api-guide/permissions/ Permissions - Django REST framework www.django-rest-framework.org  위에 대충 해석해보면 클래스나 함수를 쓸때, settings..

Web/Django 2024.09.05

Django 서버 배포하기

01. 클라우드 컴퓨팅    우리가 제작한 Django 서비스는 1년 365일 24시간 돌아가야 함즉, 우리는 안정적으로 항상 켜져 있는 컴퓨팅 자원이 필요 01. 클라우드 컴퓨팅: 쉽게 말하면 물리적 서버를 가상화 시켜서 인터넷 서비스로 제공하는 것아래와 같이 크게 세 가지로 분류할 수 있음.  IaaS(Infrastructure as a Service)물리적인 컴퓨팅 자원을 가상화 해서 제공하는 서비스모두 설정을 해줘야하므로 마음대로 커스텀 할 수 있음 (장점이자 단점)Amazon Web Service, Microsoft Azure, Google Compute EnginePaaS(Platform as a Service)플랫폼을 가상화 해서 제공하는 서비스인프라에 대한 관리 없이 개발에 집중하여 빠른 ..

Web/Django 2024.09.03

외부 API 연동하기

소셜 로그인결제(PG)외부 데이터 APIOpenAI…등의 외부 API 연동하는 법을 다룸. OpenAI API를 사용해서 AI 서비스를 제공(1) 회원 가입하기(2) API Key 발급 및 설정하기외부 서비스를 가져다가 사용하는 경우 대부분 API Key를 이용해서 서비스를 이용하게 됨.따라서 절대 노출이 되면 안됨 ! (Github Repo 등에 올리지 않도록 각별히 유의)API Key는 유저의 고유 Key이며 이 Key를 이용해서 자신들의 서비스를 이용하는 유저가 누구인지 식별하고 필요시 과금처리  이때, OPENAI API 키는 Copy 한 뒤 프로젝트 최상단 폴더에 config.py 파일을 만들어서 아래처럼 미리 복사해두자 (다시 이 key를 볼 수 없기 때문에 혹여 까먹으면 삭제하고 다시 발급받..

Web/Django 2024.09.01

Redis

00.Redis 01. Redis가 필요한 경우들02. Redis 기본 구조03. 캐시 읽기 전략 (Read Cache Strategy)04. Django With Redis  00.Redis (Remote Dictionary Server): 데이터를 빠르게 저장하고 가져오는데 탁월한 성능을 발휘하는 도구인-메모리(In-memory) 데이터베이스로 메모리를 저장소로 사용한 마디로 아주 빠름 (Disk에 비해 약 1,000배 이상)value에 String, Set, Hash 등 다양한 종류의 타입을 지원 복잡한 쿼리가 필요 없음그런데 잘 잊어버림 (인메모리라 휘발성, 근데? 보완책 있음)한 번에 하나의 일만 처리할 수 있음 (어차피 빠르고, 순서를 보장해서 꼬일일이 없음. 장점!!)  01. Redis가 ..

Web/Django 2024.08.30

Django ORM 최적화

“섣부른 최적화는 만악의 근원이다”컴퓨터 과학의 거장 ‘도널드 크누스’그래도 하고 싶다면 아래 두 단계를 따를 것하지마라.아직 하지마라. 완전히 명백하게 이해하고 해법을 찾기전까지는 하지 마라.확실하게 이해하고 사용하지 않은 단순 성능상의 이익을 위한 최적화는 결국 더욱 큰 문제로 되돌아옴 SELECT "articles_comment"."id", "articles_comment"."article_id", "articles_comment"."content", "articles_comment"."created_at", "articles_comment"."updated_at" FROM "articles_comment"SELECT "articles_article"."id", "articles_article"."..

Web/Django 2024.08.30