728x90 반응형 Django17 Django: select_related, prefetch_related, only & defer 면접 때 나왔었던 질문: Have you ever used "the prefetch_related or select_related" function in order to optimize DB access ?? https://docs.djangoproject.com/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet.select_related Django The web framework for perfectionists with deadlines. docs.djangoproject.com select_related() foreignKey 나 OneToOneField 와 같은 단일 관계 필드에서 사용된다. JOIN 연산을 이용하여 연관된 객체를 미리 .. Dev./Django & DRF 2023. 11. 10. Django: mysqlclient connection Meta 수업을 듣다가 mysql 을 사용해서 DB 를 연결해야하는 부분이 있었는데 pipenv 로 가볍게 설치해서 진행하면 되겠지 싶었다. 그런데 예상치 못한 에러가 계속해서 발생했다. [pipenv.exceptions.InstallError]: Collecting mysqlclient==2.2.0 (from -r /var/folders/3t/xyg5mpbn57dchy7qksj9n2vr0000gn/T/pipenv-_macr11_-requirements/pipenv-hu_mma6k-hashed-reqs.txt (line 1)) [pipenv.exceptions.InstallError]: Using cached mysqlclient-2.2.0.tar.gz (89 kB) [pipenv.exceptions.I.. Dev./Django & DRF 2023. 11. 4. Django: S3 호환 서비스 NCP object storage 에 이미지 저장 Django 프로젝트에서 이미지 핸들링하기 이미지 파일을 DB 에 저장하기엔 용량이 크기 떄문에 클라우드 Object Storage 에 저장해서 url 로 가져다 쓴다. NPC 는 관련해서 AWS S3 호환 서비스 Object Storage 를 제공하고 있기 떄문에 사용해보려고 한다. AWS S3 AWS boto3 를 이용한 파일 업로드 boto3 는 AWS 를 위한 Python SDK (Software Development Kit) 이다. 사용하면 AWS 서비스에 쉽게 액세스 할 수있다. NCP 의 Object Storage 와 같은 S3 호환 서비스에도 사용이 가능하다. Object Storage API Object Storage API api.ncloud-docs.com 간단한 사용 방법 HTTP/.. Dev./Django & DRF 2023. 10. 19. Django: ‘WSGIRequest' object has no attribute 'data' ‘WSGIRequest' object has no attribute 'data' 에러는 DRF 와 헷갈려서 자주 마주치는 에러 현상 Django 의 WSGIRequest 객체에 data 속성이 없다는 뜻. 일반적으로 Django 의 HttpRequest 객체에서 data 에 접근할 때 발생 data → POST 로 HttpRequest 에 맞게 변경 request.data.get("image") request.POST.get("image") data 는 일반적으로 restframework 에서 사용됨 Dev./Django & DRF 2023. 10. 18. Prometheus: Django 와 연결해보기 Prometheus 도커로 열어보기 Django-prometheus 프로메테우스가 장고를 모니터링하게 만들기 위해서는 몇가지 설정을 변경해주어야 한다. 장고 프로메테우스 설치 pip install django-prometheus 파이썬 settings.py 에 설치내용과 미들웨어 추가 INSTALLED_APPS = [ ... 'django_prometheus', ... ] MIDDLEWARE = [ 'django_prometheus.middleware.PrometheusBeforeMiddleware', # All your other middlewares go here, including the default # middlewares like SessionMiddleware, CommonMiddleware.. Dev./Prometheus & Grafana 2023. 10. 16. [Cloud] Django: Code develop for TEST2 Github Actions 에서 work flow 를 분리했다. 이제 django 쪽에서 test 를 위한 일부 코드를 작성해 보자. TEST 를 위한 기능 디벨롭, 그리고 테스트 코드 실행 현재 제공하고 있는 기능은 Topic 을 생성하고 그 아래에 Post 들이 One to Many 의 형태로 묶여있는 구조이다. 또 부여된 그룹에 따라 권한이 달라져 접근하거나 작성하는데 제한을 두고 있다. 이 부분들을 테스트 하기 위해서는 유저를 생성하면서 권한을 부여하고, Topic 과 Post 를 생성하는 과정에서 권한을 체크하는 로직이 필요할 것이다. 이를 테스트 하기 위해서 로직을 구현해보자 장고의 로직 자체는 클라이언트가 urls 를 통해 요청을 보내면 views 에서 모델과 templates 을 엮어주는 .. Dev./Django & DRF 2023. 8. 31. Django : DRF 적용하기3 - Spectacular API 로 개발하는데 프론트 역할을 대신해줄 수 있는 기능이 담겨 있는 라이브러리를 사용하여 쉽게 기능동작을 확인할 수 있다. install pip install drf-spectacular pip freeze | grep drf-spectacular >> requirements.txt settings.py third party app 추가 ## Third party Apps INSTALLED_APPS += [ 'rest_framework', 'drf_spectacular', ] REST_FRAMEWORK 추가 REST_FRAMEWORK = { ... # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access.. Dev./Django & DRF 2023. 8. 16. Django : DRF 적용하기2 Forumapp DRF DRF 의 핵심은 serializing 을 아주 간단하게 하는 라이브러리들을 쓸 수 있다는 점이다. 모델을 정의해서 models.Models 로 상속 받아서 사용 rest_framework 를 설치해서 serializers 에 적용 serializer.ModelSerializer 를 상속받아 ModelSerializer 생성 view 에서 해당 시리얼라이저를 사용하여 클래스를 만들고 ModelViewSet 을 상속 마지막으로 urls 에 router 로 연결해줌 model 설정 → models.Model 상속 serializer 설정 → request 와 response 를 프레임 워크로 바로 바로 JSON 형식으로 바꿔서 보내고 받을 수 있게 해주는 설정 views 설정 → re.. Dev./Django & DRF 2023. 8. 16. Django : DRF 적용하기 설치 후 requirements 에 삽입 pip install djangorestframework pip freeze | grep djangorestframework >> requirements.txt # requirements.txt Django==4.2.3 gunicorn==21.2.0 psycopg2-binary==2.9.7 pymongo==4.4.1 djangorestframework==3.14.0 settings.py ## Third party Apps INSTALLED_APPS += [ 'rest_framework', ] project - urls.py urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include(blog_url.. Dev./Django & DRF 2023. 8. 15. Django : DRF - quick start set up environment mkdir tutorial cd tutorial python3 -m venv venv source venv/bin/activate install frameworks pip install django pip install djangorestframework create project and app django-admin startproejct tutorial cd tutorial django-admin startapp quickstart # also, the below can be used to start an app python3 manage.py startapp quickstart migrate python3 manage.py migrate create super us.. Dev./Django & DRF 2023. 8. 15. [Cloud] 배포 - NCP : docker 로 배포 도커파일에서 실행하던 런 코드를 스크립트 파일로 바꾼다. 스크립트 파일의 경로를 한번에 scripts 로 정리하고 새롭게 start 파일로 작성한다. 경로에 민갑하기 때문에 최상위 경로에 하나 만들어주고 lion_app (manage.py 가 있는) 에 하나 더 만들어서 구분지어 준다. FROM python:3.11-alpine LABEL likelion.web.backendauthor="Ivan kim " ... COPY ./scripts/start /start RUN sed -i 's/\\r$//g' /start # \\r : 캐리지 리턴 RUN chmod +x /start # RUN python3 manage.py migrate -> start 스크립트로 대체 RUN if [ -e /var/www/.. Dev./Cloud 2023. 8. 13. [Cloud] 배포 - Docker : 장고 기본 css 파일 매핑 현재 nginx 로 들어오는 요청을 장고 서버포트로 보내주는데 스태틱 파일은 다른데로 보내주게 설정한다. server { listen 80; # server_name http 223.130.133.96; server_name localhost; location / { # 아래의 코드로는 nginx가 실행된 컨테이너의 주소로 보내기 때문에 Bad request 가 뜬다. # proxy_pass ; # 그래서 lion-app 즉 장고가 떠있는 컨테이너의 8000포트로 프록시 패스로 넣어주어야 한다. proxy_pass ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /static/ { alias /var/ww.. Dev./Docker 2023. 8. 12. 이전 1 2 다음 728x90 반응형