ValueError: I/O operation in closed file 장고의 imageField를 open하고 다시 같은 파일을 open하려고 할때 나는 오류입니다. stackoverflow에서 아래와 같은 코멘트가 있었습니다. "imageField.open() doesn't alter the file's contents, but it does reset the pointer” 따라서 image를 두번 오픈할 때 copy.deepcopy(깊은복사) 로 image를 복사해준 후 open해주면 오류가 나지 않았습니다. 깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것입니다.

DRF Filter 기본적인 viewsets class가 다음과 같이 되어 있을 경우 class IcecreamViewSet(viewsets.ModelViewSet): queryset = Icecream.objects.all() serializer_class = IcecreamSerializer /api/icecream/ 으로 요청을 보내서 DB에 존재하는 icecream list를 불러오게 됩니다. [ { "id": 7, "name": "메로나", "price": 1000 }, { "id": 8, "name": "누가바", "price": 1000 }, { "id": 9, "name": "돼지바", "price": 1000 }, ... ] /api/icecream/7/ 과 같이 요청을 보내면 해당 id..

SQL Lite와 Django orm을 쓰던 중 쿼리가 어떻게 돌아가는지 궁금할때가 있다. 이때 쿼리가 어떻게 돌아가는지 Django의 settings.py 에서 설정해주면 쿼리를 볼 수 있다. LOGGING = { 'version': 1, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', } }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', } }, 'loggers': { 'django.db.backends': { 'level': 'DEBUG', 'han..

DRF를 통해 REST API 서버를 구축하고 프론트와의 통신을 할 때 가장 먼저 생기는 오류는 CORS오류입니다 "No Access-Control-Allow-Origin' 오류와 함께 데이터를 불러오거나 등록하지 못하는데 먼저 해결 방법부터.. pip install django-cors-headers 먼저 모듈을 설치해 주고 INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', ... ] CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True settings.py에 위와같이 설정값을을 넣어주면 해결됩니다. 만약에 해결이 안된다면 ..

Django DRF에는 Serializer라는 데이터 타입이 있습니다. 크게 봤을때 모델 인스턴스를 JSON으로 직렬화 하는 역할, `JSON 타입`을 받아서 view로 전달하는 역할이 존합니다. 이때 후자의 경우 올바른 데이터를 받았는지 검증해야할 필요가 있습니다. 모델과 연관된 serializer를 사용한다면 기본적으로 검증을 거치게 됩니다. DRF를 사용한다면 클라이언트에서 Django api서버로 POST 요청을 보내면 대부분 urls -> view -> model 순서대로 요청이 들어오게 됩니다. view에서는 serializer를 통해 역 직렬화를 통해 모델에 데이터를 저장하는데 이때 데이터를 검증하게 됩니다. class Icecream(models.Model): name = models.Ch..

Gunicorn 개발을 하며 django를 실행시킬때 우리는 runserver를 통해 django를 실행시킨다. 대부분의 웹 서버는 어떻게 파이썬 프로그램을 호출해야 하는지 모르므로 파이썬 프로그램을 호출하지 못하기 때문에 wsgi서버는 웹에서 서버(nginx)와 통신을 할때, 정적파일이 아닌 동적페이지 요청을 할때 중간에서 파이썬 프로그램을 호출 해 주는 역할을 한다. python manager.py runserver 로 동작하는 내장서버는 웹 서버와 WSGI 서버의 기능들을 모두 포함하고 있다. 내장 서버는 기능들이 단순화되어 있고 대량 요청이나 동시 요청에 대한 기능들이 부족하기 때문에 운영환경에서 사용하기에는 적절하지 않다. 동작 과정 위와같이 gunicorn은 Nginx와 같이 쓰인다. 클라이언..

ManyToManyField django에서 다대다 관계는 ManyToManyField로 표현할 수 있습니다. 간단하게 고객과 아이스크림의 관계를 ManyToManyField로 표현 해보겠습니다. ManyToManyField 예제 class Customer(models.Model): name = models.CharField(max_length=20) def __str__(self): return self.name class Icecream(models.Model): name = models.CharField(max_length=20) customer = models.ManyToManyField(Customer, related_name="favorite_icecream") def __str__(self)..

django의 모델을 model.objects.get을 사용해서 불러올시에 다음과 같이 예외처리를 해줄 수 있습니다. model.DoesNotExist try: user = User.objects.get(pk=1337) car = Car.objects.get(pk=13) except User.DoesNotExist: logging.error("User does not exist") except Car.DoesNotExtist: logging.error("Car does not exist") 각 모델마다 DoesNotExist를 호출해서 나눠서 확인이 가능합니다. ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist try: us..
- Total
- Today
- Yesterday
- for-else
- taggit
- 파이썬
- sql lite
- dfs
- 의대 신경학 강의
- leetcode
- 독후감
- conTeXt
- 문자열 뒤집기
- go context
- 팰린드롬수
- query
- 프로그래머스
- go
- gunicorn
- 소프트웨어 장인
- ManyToMany
- 방금그곡
- stdout
- django
- 백준
- Python
- Two Scoops of Django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |