본문 바로가기

Django

(21)
PostgreSQL 설정 PostgreSQL을 터미널로 접속한다. 일단 psql 을 입력해서 들어간다. 그러면 아래와 같은 창이 나타날것이다. 이후 명령어를 순서대로 입력해준다. 데이터베이스를 만드는 명령어 psql=# create database django_test; 새로운 유저를 만드는 명령어 psql=# create user root with password 'password'; root는 user 이름이고 따옴표로 감싸져 있는 password는 비밀번호이다. 그리고 몇가지 설정을 추가해준다. psql=# alter role root set client_encoding to 'utf-8'; psql=# alter role root set timezone to 'Asia/Seoul&#39..
django test code 실행시 Error test code를 작성하고 실행 시킬때 발생한 에러 $ ./manage.py test 라고 입력시 Got an error creating the test database: permission denied to create database 라는 Error가 발생하는데 이유는 postgres에서 설정한 유저가 수퍼유저로 설정 되지 않았기 때문이다. 그래서 수퍼유저로 다음 명령을 실행해서 createdb 권한을 추가해줘야한다. 아래는 사용하고자 하는 DB를 터미널로 접속한 상태이다. psql=# ALTER USER CREATEDB; 그리고 test 코드를 실행시켜본다.
django 단위 테스트 작성하기 (TDD) 단위 테스트 프로그래머 관점에서 애플리케이션 내부를 테스트하는 것 하위 레벨의 개발 주도한다는 뜻 TDD 작업 순서 기능 테스트를 작성 후 사용자 관점의 새로운 기능성을 정의하는 것부터 시작한다. 기능 테스트가 실패하고 나면 어떻게 코드를 작성해야 테스트를 통과할지를 생각해보도록 한다. 이 시점에서 하나 또는 그 이상의 단위 테스트를 이용해서 어떻게 코드가 동작해야하는지 정의한다. 단위 테스트가 실패하고 나면 단위 테스트를 통과할 수 있을 정도의 최소한의 코드만 작성한다. 기능 테스트가 완전해질 때까지 과정 2, 3을 반복해야할 수 도 있다. 기능 테스트를 재실행해서 통과하는지 또는 동작하는지 확인한다. 이 과정에서 새로운 단위 테스트를 작성해야 할 수도 있다. Django 단위 테스트 django에서 ..
django JWT 사용 방법 JWT란? JsonWebToken으로 말 그대로 JSON 객체로 정보를 전달하는 방식이다. 설치 $ pip install pyjwt JWT 인증 구현하기 header의 META 데이터를 통해 정보 얻을 수 있게 로직 구성 # 본인이 원하는 폴더에서 작업하기 import jwt from django.conf import settings from rest_framework import authentication, exceptions from users.models import User class JWTAuthentication(authentication.BaseAuthentication): def authenticate(self, request): try: token = request.META.get(&#3..
django serializer (serializers.Serializer) serializer란? serializer는 데이터를 직렬화 할 수 있게 도와준다. 예를 들어 사용자 DB에 이메일, 이름, 전화번호 등등의 데이터가 있다고 하면 해당 내용들을 JSON or Dict로 직렬화 할 수 있다. 그리고 serializer는 두가지로 나뉘어 지는데 Serializer / Deserializer로 나뉘어 사용 가능하다. 각각의 의미에 대해서 먼저 알아보자 Serializer python 객체나 django에서 queryset등 복잡한 객체들을 REST API에서 사용 가능하게 json 형태로 변환해준다. Deserializer 데이터를 request body로 부터 받아서 다시 복잡한 데이터로 변환 해주는 작업(serializer 처리를 하기 이전 상태로) (참고 - Deseri..
django drf-yasg API 문서 커스텀하기 (@swagger_auto_schema) (FBV) 앞서 해당 내용을 진행하기 위해선 drf-yasg가 install되어있어야한다. 함수형 뷰(FBV)를 기준으로 설명한 내용이다. API 문서를 작성할때 부가적인 내용을 추가적으로 적지 않으면 어떠한 내용인지 잘 모르는 경우로 나타내어진다. 그렇기 때문에 각각 정리가 필요한데 작성법은 아래의 코드로 알아볼 수 있다. @api_view(['POST']) def index(request): """ 해당 내용의 주제 --- ## 경로 ## 파라미터 설명 - id : user id (예시) """ if request.method == 'POST': return Response() 단순하게 이렇게만 적어도 깔끔하게 나오는걸 확인할 수 있다. 그렇다면 HTTP METHOD가 두개 이상이라..
django api_view 사용할때 permission custom하기 해당 포스팅 내용의 기본 사항은 FBV(함수형 뷰)를 기반으로 작성된다. permissions 란? 인증 및 제한과 함께 사용 권한은 request에 액서스를 허용할지, 거부할지를 결정하게 된다. django에서의 권한을 알아보면 대표적으로 is_superuser, is_staff, is_active 가 있다. is_superuser는 create super로 생성한 user에 대해 True이며 해당 계정의 is_superuser가 True이면 permission에 걸리지 않고 모든 권한에 대해서 접근 허용이 된다. is_staff는 True일 경우 우리가 잘 아는 admin페이지로 접속 가능하고 나머지는 일반 유저와 동일한 형태를 가진다. is_active는 계정 활성이라 생각하면 된다. 만약 Fals..
django FBV(함수형 뷰)에 대해서 django에서는 view를 처리할때 두가지 방법으로 처리할 수 있다. FBV(함수형 뷰), CBV(클래스형 뷰)로 처리할 수 있는데, 이번 포스팅은 FBV에 대해서만 다뤄볼 예정이다. FBV(함수형 뷰) FBV는 Function Base View를 뜻하고 있으며, 함수를 사용하고 있는 뷰이다. 사용 방법에 대해서는 url부터 알아 볼 수 있다. urls.py urlpatterns = [ path('', views.index, name='index'), ] view를 import해서 함수를 선언하는 형식으로 쓰여진다. views.py from rest_framework.response import Response from rest_framework.decorators impo..