코딩공부/Django14 Django Q() Q() 사용 Q는 언제 사용하나요? Q는 장고 orm에서 or, and, not 조건을 사용하고 싶을 때 사용할 수 있다. 1) or 조건 from django.db.models import Q User.object.filter(Q(name__icontains='김') | Q(age='20')) # 이름에 김이 포함되거나 나이가 20 인 것 2) and 조건 User.object.filter(Q(name__startswith='이') & Q(name__startswith='최')) # 이름이 이로 시작하거나 최로 시작하는 것 3) not 조건 exclude() 사용 User.object.exclude() ~Q() 사용 User.objects.filter(~Q()) 2022. 12. 27. DRF Serializer를 통한 유효성 검사 🔍 Serializer를 통한 유효성 검사 📌 유효성 검사 정규 표현식 이메일 유효성 검사 import re def is_email_valid(email): REGEX_EMAIL = '([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+' if not re.fullmatch(REGEX_EMAIL, email): return "이메일 형식을 확인하세요." 비밀번호 유효성 검사 def is_password_valid(password): REGEX_PASSWORD = '^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*()])[\w\d!@#$%^&*()]{8,}$' if not re.fullmatch(REGEX_P.. 2022. 12. 21. Python 라이브러리 의존성 확인하는 방법(pipdeptree) 파이썬으로 pip를 통해 패키지를 설치하고 서버에 배포하려고 하다보니 도커 이미지 생성 중에 임포트 에러가 발생하였다. 이것 저것 찾다보니 원인은 requirements.txt의 설치할 패키지 항목 중에 의존성 패키지가 껴있다보니 의존성 패키지를 설치하면서 에러가 발생한 듯 하다. 의존성 패키지를 빼준 후에 설치하니 문제 없이 설치 완료 ! 후에 좀 알아보니 pipdeptree로 의존성 패키지를 간편하게 확인할 수 있다고 한다. 📌 pipdeptree 설치 방법 pip로 간단하게 설치할 수 있다. pip install pipdeptree GitHub - tox-dev/pipdeptree: A command line utility to display dependency tree of the installe.. 2022. 12. 13. DRF SerializerMethodField()로 모델 필드 변형하여 활용하기 SerializerMethodField() 시리얼라이저로 객체를 직렬화 할 때, SerializerMethodField()를 활용하면 필드 값을 입맛에 맞게 가공할 수 있다. 예를 들어, Post라는 모델에 likes라는 ManyToManyField를 아래와 같이 만들어주었다면 DB에는 어떤 post에 누가 좋아요를 눌렀는지 확인할 수 있다. 하지만 어떤 post에 좋아요를 몇 명이 눌렀는지에 대한 정보는 없다. # models.py class Post(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) ... likes = models.ManyToManyField(User, related_name='like_posts') Se.. 2022. 12. 8. Django 각종 API Key, Token 관리하는 방법 여러 외부 API를 사용하기 위해 필요한 API Key 또는 Token 값들을 프로젝트 코드에 포함해서 저장할 경우에 Git에 노출되어 피해를 볼 수 있게 된다. 그래서 이를 해결하기 위한 방법으로 JSON 파일에 내용을 작성하고 그 값들을 장고에서 불러와 사용하면 된다. 프로젝트 구조 django_project ├── app │ ├── __init__.py │ ├── .... │ └── wsgi.py ├── db.sqlite3 ├── manage.py ├── secrets.json ├── .git └── .gitignore secrets.json에 내용 저장 아래와 같이 필요한 키 값이나 토큰 값을 입력하여 저장 { access_token : "1600...Vbsk9" access_secret : "b.. 2022. 12. 7. DRF APIView로 좋아요 기능 구현_백엔드 아직 코딩 초보이기에 미개한 방법일 수 있으나 열심히 짱구를 굴려 구현한 좋아요 기능에 알아보겠습니다. APIView로 get, post 메소드를 통해 프론트엔드와 통신을 해야 한다. get 메소드는 좋아요에 대한 정보를 프론트가 받아 사용할 것이고, post 메소드는 프론트에서 좋아요 버튼을 눌렀을 때 백에서 이를 받아 DB에 저장해주게 된다. 좋아요 필드는 ManyToManyField로 작성해주었다. PositiveIntegerField를 사용하는 방법도 있는 것 같은데 아직 완전히 이해하지 못해서 다음 기회에 공부해보기로.. # models.py class Post(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) ..... 2022. 12. 2. 상태코드 HTTP_204_NO_CONTENT 관련 에러 상태코드 HTTP_204_NO_CONTENT 관련 에러 증상 : 해당 기능의 api 요청을 보낼 시 ‘HTTP_204_NO_CONTENT’를 사용할 경우 에러를 일으킴 원인 : console.log(response)를 사용하여 확인 결과 body에 백엔드의 데이터를 담아오지 못하는 것을 찾아냄. 그래서 확인 결과 상태코드에 따라 api로 요청을 보낼 때 영향을 미칠 수 있던 것이다. 상태코드 HTTP_204_NO_CONTENT를 사용 하여 restAPI를 사용하면 json 형식의 데이터를 담을 수 없어 에러를 발생. 해결방법 : ‘HTTP_204_NO_CONTENT’는 json 형식의 데이터를 주고 받을 수 없으므로 상태코드를 ‘HTTP_200_OK’ 변경하여 해결 API 개발 시 적합한 상태코드를 작성.. 2022. 11. 28. Django Queryset, 데이터베이스에서 원하는 데이터 조회 Queryset 이란? Django ORM에서 제공하는 데이터 타입으로, 데이터베이스에서 전달받은 객체 목록으로 구조는 list이지만 파이썬의 기본 자료구조가 아니기 때문에 파이썬 파일에서 읽고 쓰기 위해서는 자료형 변환을 해줘야 한다. 다양한 데이터 조회 방법 기본 구조는 ModelName.objects를 통해 DB 데이블에 저장 된 데이터를 조회 한다. User.objects all User 테이블 안에 저장 된 모든 데이터를 조회. Queryset 타입으로 반환. User.objects.all() filter 테이블의 데이터를 필터링해서 조회. and와 or로 조금 더 구체적으로 원하는 데이터를 조회 가능. Queryset 타입으로 반환. User.objects.filter() exclude fil.. 2022. 11. 15. DRF Permission으로 사용자의 접근 제어 DRF Permission 설명 permission은 현재 요청에 대한 허용/거부를 결정하며 APIView 단위로 지정이 가능하다. 즉, 앱의 각 기능마다 해당 유저가 로그인을 한 사용자인지 등을 확인하여 권한을 부여할 수 있게 된다. Permission 종류 AllowAny : 인증 여부에 상관없이 뷰 호출 허용 IsAuthenticated : 인증된 요청(등록된 사용자)에 한해서, 뷰 호출 허용 IsAdminUser : Staff User의 요청만 View 호출을 허용 IsAuthenticatedOrReadOnly : 인증된 요청은 View 호출을 허용하고, 비 인증된 요청은 안전한 읽기/조회만 허용 이렇게 4가지 permission가 있으며, 전역 설정과 단일 모델 설정이 각각 가능하다. Permi.. 2022. 11. 14. 이전 1 2 다음