[TIL] 2024-11-13 (Django Restframework/ngrok)TIL/2024.112024. 11. 13. 00:47
Table of Contents
728x90
Today I Learned (2024-11-12)
목차
오늘 공부한 내용
1. KDT 중간 프로젝트
LLM 로 문장 생성하기
- ChromaDB 보다 FAISS가 결과가 괜찮아서 Chroma로 갔다가 다시 FAISS를 이용해 vectorstore
- 사전 학습 모드 개발중
- 단어 학습(말하기)
2. Django
CBV restframework
Mixins
viewsets, Router
이게 인상깊다. 매우 쉽게 API를 만들 수 있다.
찾아보니 역시 단점도 존재..
- 쉽게 만드는건 역시 커스텀하는데 제한 존재
- URL 이 고정적
- 복잡한 비지니스 로직에서 불편할수도
- 과도한 엔드포인트 생성
예시 코드
# views.py from rest_framework import viewsets from .models import Profile from .serializers import ProfileSerializer class ProfileViewSet(viewsets.ModelViewSet): queryset = Profile.objects.all() serializer_class = ProfileSerializer
# urls.py from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import ProfileViewSet # Router 생성 router = DefaultRouter() router.register(r'profiles', ProfileViewSet) # 'profiles/' 경로에 ProfileViewSet을 등록 urlpatterns = [ path('', include(router.urls)), # Router가 자동 생성한 URL을 포함 ]
위에 코드를 만들면
profiles/
경로에 URL 패턴이 자동으로 등록된다.- GET /profiles/: 모든 프로필 목록 조회
- POST /profiles/: 새 프로필 생성
- GET /profiles/
/: 특정 프로필 조회 - PUT /profiles/
/: 특정 프로필 전체 업데이트 - PATCH /profiles/
/: 특정 프로필 부분 업데이트 - DELETE /profiles/
/: 특정 프로필 삭제
nested serializer
중첩 직렬화?...
GPT 검색 결과
- 하나의 Serializer 안에 다른 Serializer를 포함시키는 구조
- 중첩 직렬화가 맞았다.
- 예시 코드
from rest_framework import serializers from django.contrib.auth.models import User from .models import Profile # User 정보를 직렬화하는 Serializer class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'username', 'email'] # Profile 정보를 직렬화하는 Serializer, UserSerializer를 중첩함 class ProfileSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True) # UserSerializer를 중첩시켜서 사용자 정보를 포함 class Meta: model = Profile fields = ['user', 'bio', 'location', 'birth_date']
- 응답
{ "user": { "id": 1, "username": "johndoe", "email": "johndoe@example.com" }, "bio": "I am a software developer.", "location": "New York", "birth_date": "1990-01-01" }
3. ngrok
ngrok 설치하기
- 프로젝트 중 Django 서버를 열면 http라서 다른자리에서 마이크를 쓸 수 없었다.
- 그리고 외부에서 접속시키고 싶었다.
- 그래서 https 를 사용하고 싶어서 ngrok을 설치해서 실행시킴
- 사용법
- Django 서버 먼저 실행 ->
py manage.py runserver 8000
- ngrok 실행 ->
ngrok http 8000
https://c479-121-140-172-195.ngrok-free.app
이런식으로 주소가 만들어짐- 그럼 외부에서도 접속가능
- Django 서버 먼저 실행 ->
어려웠던 내용
- Django..
궁금한 내용과 부족한 내용
- Django 활용
느낀 점
- 오늘도 역시 쉽지 않다.
'TIL > 2024.11' 카테고리의 다른 글
[TIL] 2024-11-14(LangChain/KDT) (0) | 2024.11.15 |
---|---|
[TIL] 2024-11-13 (Django) (0) | 2024.11.14 |
[TIL] 2024-11-11 (Django/Docker) (2) | 2024.11.12 |
[TIL] 2024-11-10 (Django) (1) | 2024.11.11 |
[TIL] 2024-11-09 (Django) (0) | 2024.11.10 |
@maneDataLab :: 마네의 데이터랩
배움에 즐거움을 느끼는 마네의 데이터랩 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!