Django 37

장고 서버 배포 간단 요약

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 명령은 배포 인스턴스에..

Django 2024.10.04

장고 커서 페이지네이션

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

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..

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..

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)플랫폼을 가상화 해서 제공하는 서비스인프라에 대한 관리 없이 개발에 집중하여 빠른 ..

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를 볼 수 없기 때문에 혹여 까먹으면 삭제하고 다시 발급받..

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가 ..

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"."..

Django 2024.08.30