Web 49

외부 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

JSON Web Token, JWT

Session & Cookie⭐ 쿠키 (Cookie)웹 브라우저와 요청과 응답을 주고받을때 사용하는 데이터 조각쿠키는 도메인에 제한적이며 유효기간이 정해져있음Auth 외에도 다양한 방식으로 활용 (광고...?)⭐ 세션 (Session)stateless한 HTTP 특징을 보완하기 위한 방법세션 DB를 이용해서 유저의 정보를 기억하며 Session ID라고 하는 랜덤한 Key를 쿠키에 담아서 Auth에 활용쿠키를 사용해서 Session ID를 주고 받는 것  JSON Web Token, JWT: 쿠키는 웹 브라우저에만 존재. 어플 등 다양한 장치와 소통 필요! Token은 간단히 말해 랜덤하게 생긴 문자열이며, 일정한 규칙을 가지고 있고 간단한 서명을 더한 문자열로 토큰 자체에 유저에 대한 간단한 정보가 들..

Web/Django 2024.08.30

Serializer 활용하기

1. Article에 Comment 추가하기 : 모델 사이에 참조 관계가 있다면 해당 필드를 포함하거나 중첩할 수 있음 결국 우리가 조작해줘야할 것: Serializer현재 Article → Comments 접근이 필요 == 역참조역참조시 사용할 수 있는 comment_set 이 있으나 우리는 comments 로 명명from rest_framework import serializersfrom .models import Article, Commentclass CommentSerializer(serializers.ModelSerializer): class Meta: model = Comment fields = "__all__" read_only_fields = ("..

Web/Django 2024.08.29

Relationship과 DRF(with. particular seed)

django-seed에서 앱이 아니라 특정 모델만 지정해서 댓글 만들기!https://github.com/Brobin/django-seed python manage.py seed articles --number=20 --seeder "Comment.article_id" 2 Comment 만들어보기models.pyclass Comment(models.Model): article = models.ForeignKey( Article, on_delete=models.CASCADE, related_name="comments") content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) upda..

Web/Django 2024.08.29

DRF CBV

Class Based View 특징클래스형 뷰에서는 특정 Http Method에 대한 처리를 함수로 분리할 수 있음→ GET요청에 대한 처리는 get()에서, POST 요청에 대한 처리는 post()에서 정의 가능 Class Based View 종류APIView - DRF CBV의 베이스 클래스GenericAPIView일반적인 API 작성을 위한 기능이 포함된 클래스보통 CRUD 기능이 대부분인 상황을 위해 여러가지 기능이 미리 내장됨Mixin재사용 가능한 여러가지 기능을 담고있느 클래스말그대로 여러 클래스를 섞어서 사용하기 위한 클래스ListModelMixin - 리스트 반환 API를 만들기 위해 상속 받는 클래스CreateModelMixin - 새로운 객체를 생성하는 API를 만들기위해 상속 받는 클..

Web/Django 2024.08.29

Django Seed(Response와 Serializer)

0. 기초작업api_pjt 라는 이름의 프로젝트를 생성articles 앱을 생성하고 기본적인 url 구조를 만듦/api/v1/articles/로 들어오면 articles 앱의 urls로 연결articles 앱의 models.py를 작성Artcile 모델 클래스를 작성하고 아래 필드를 포함titlecontentcreated_atupdated_at조회를 하려면 데이터가 필요Django Seed :→ 매번 create하는 것도 너무 힘들기에 자동으로 많이 생성해주는 라이브러리 installpip install django-seed→ freeze !settings.pyINSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "djang..

Web/Django 2024.08.29