DevOps

    [Error]ModuleNotFoundError: No module named 'pip'

    [Error]ModuleNotFoundError: No module named 'pip'

    오류 발생 원인 pip instal -upgrade pip 명령을 통해 pip를 업그레이드를 시도하자 다음과 같은 에러가 나타났다. pip 업그레이드를 진행하면서 기존 pip를 삭제한 후, 다시 설치하는 과정에서 permission error로 설치가 안된 것이다. 해결방법 1. python -m ensurepip 명령어 이용 python -m ensurepip python -m ensurepip --upgrade # 방법 1 python -m pip install --upgrade pip # 방법 2 ensurepip는 Python설치시 기본으로 내장되어 있던 pip를 복구하는 명령어다. 방법1은 내장 pip복구 방법인 python -m ensurepip에 --upgrade를 추가하는 방법 방법2는 터..

    [Django] HTTP 상태코드 응답

    대표적인 상태 코드 코드 설명 200번대 성공 200 서버가 요청을 잘 처리했다. 201 작성완료. 서버가 요청을 접수하고, 새 리소스를 작성했다. 300번대 추가 조치가 필요하다. 301 영구 이동, 요청한 페이지가 새 위치로 영구적으로 이동했다. 302 임시 이동, 페이지가 현재 다른 위치에서 요청에 응답하고 있지만, 요청자는 향후 원래 위치를 계속 사용해야한다. 400번대 클라이언트 오류 400 잘못된 요청 401 권한없음 403 (Forbidden) 권한을 갖고 있지않아서 요청이 거부됨 404 서버에서 요청한 리소스를 찾을 수 없음 405 허용되지 않는 방법. POST 방식만을 지원하는 뷰에 GET 요청을 한 경우 500번대 서버 오류 500 서버 내부 오류 발생 200 응답 예 from djan..

    [Django] ForeignKey

    1:N 관계 models.ForeignKey로 표현한다. N측에 명시한다. (Post : Comment이면, Comment에 명시) ForeignKey(to, on_delete) to : 대상모델 클래스를 직접 지정하거나, 클래스명을 문자열로 지정한다. (자기 참조는 self) on_delete : Record 삭제시 규칙 CASCADE : FK로 참조하는 다른 모델의 Record도 삭제 PROJECT : ProtectedError (IntegrityError 상속)을 발생시키며, 삭제 방지 SET_NULL : Record가 삭제되었을시 null로 대체한다. 필드에 null=True 옵션 필수. SET_DEFAULT : 디폴트 값으로 대체한다. 필드에 디폴트 값 지정 필수. SET : 대체할 값이나 함수..

    [Django] django-debug-toolbar 사용하기

    [Django] django-debug-toolbar 사용하기

    공식문서 django-debug-toolbar의 특징 현재 request/response에 대한 다양한 디버깅 정보를 보여준다. 다양한 Panel을 지원한다. SQLPanel을 통해, 각 요청 처리 시에 발생한 SQL 내역 확인 가능하다. Ajax 요청에 대한 지원은 불가능하다. 설치 및 실행 1. 설치 $ pip install django-debug-toolbar 2. settings.py 추가 INSTALLED_APPS = [ ... 'debug_toolbar', ... ] ... MIDDLEWEAR = [ ... 'debug_toolbar.middleware.DebugToolbarMiddleware', ... ] ... INTERNAL_IPS = ['127.0.0.1'] 3. (project)url..

    [Django] django extensions shell_plus 사용하기

    공식문서 extension shell_plus의 특징 장고 ORM이 어떻게 동작하는지 알아 볼 수 있다. 필요한 몇몇 기능들을 자동으로 import를 해준다. (주의사항)import 이름이 겹쳐버리면 overwirte 되어버린다. shell에서 직접 정렬하면 모델 Meta에 지정한 것이 무시가 된다. 설치 및 실행 1. django extensions 설치 $ pip install django-extensions 2. settings.py에 추가. INSTALLED_APPS = [ ... 'django_extensions', ... ] 3. 실행 $ python manage.py shell_plus --print-sql 실행하면 자동으로 import 해준다. # Shell Plus Model Import..

    [Django] 장고 모델(ORM)

    장고의 모델을 만들어 준 후, 쿼리가 어떻게 작동했는지 확인 할 수 있다. 모델 작동 확인 1. 모델 생성 # /models.py class Post(models.Model): message = models.TextField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) auto_now_add : 최초 생성 시간을 1번 사용하여 저장, 갱신 불가능 auto_now : 장고 모델이 저장 될 때마다 현재날짜(시간)으로 갱신, 갱신 가능 2. makemigration, migrate shell python manage.py makemigrations python manag..

    [DRF] simple-jwt와 cumstom user

    [DRF] simple-jwt와 cumstom user

    공식문서를 보면서 jwt와 user를 사용해보려고 한다. 여기서 소셜인증은 사용하지 않는다. 환경세팅 1. 패키지 설치 pip install djangorestframework pip install djangorestframework-simplejwt pip install django-allauth pip install dj-rest-auth 2. settings.py # settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfil..

    [Python] str count 함수

    string.count(self, x, _start, _end) _start, _end는 문자열 범위를 지정하고, 생략이 가능하며, 생략할 시 처음부터 끝까지 탐색한다. 대소문자를 구분한다. x에 문자 한개 또는 문자열로 입력이 가능하다. a, b, c = map(int, input().split()) # 2 2 2 result = list(str(a * b * c)) # 8 for i in range(10): print(result.count(str(i)), end=' ') # 결과 0 0 0 0 0 0 0 0 1 0

    [DRF] pagination custom

    [DRF] pagination custom

    DRF의 pagination을 쓸 때, 나오는 결과에 총 페이지, 현재 페이지를 추가해보려고 한다. 결과부터 보자면 커스텀을 하지 않으면 결과는 이렇게 나온다. 그리고 커스텀을 하게되면 결과는 이렇게 나온다. Setting # models.py from django.db import models class Post(models.Model): title = models.CharField('TITLE', max_length=100) content = models.TextField('CONTENT') image = models.ImageField('IMAGE', upload_to='post/%Y/%m/', blank=True, null=True) # serializers.py from rest_framewor..

    [DRF] 직렬화, 역직렬화

    직렬화와 역직렬화 DRF에서는 직렬화, 역직렬화가 따로 있는 것이 아니라, Serializer가 두 기능을 제공한다. Serializer Serializer는 Form과 Model 둘 다 비슷해 보이기도 하다. Form HTML을 다루기 위한 것. Model DB Table을 다루기 위한 것. 이 두개 모두 유효성(validation)과 직렬화(serialization) 기능을 모두 제공한다. 유효성과 직렬화를 포함하는 클래스가 Serializer 클래스 이다. Serialization 1. 메모리 내부 ( 파일, DB, Network) ↔ 외부 메모리 환경이 다르기 때문에 값 그대로 저장 할 수 없다. “홍길동” string을 내부에서 메모리 외부로 보내려면 bytes로 변환 후 보내야한다. 99 in..