본문 바로가기

python5

django 커스텀 유저 모델 처음 django 프로젝트를 설정하면 기본으로 설정되어있는 user 모델이 있다. 그래서 따로 user 모델을 추가하지 않더라도 python manage.py createsuperuser로 user 생성은 가능하다. 이렇듯 장고에는 숨겨진 기능들이 많은데, 사실 한눈에 잘 보이지 않을 뿐 없는 건 아니다. 가장 기본적인 사용자 모델을 코드 수준에서 눈으로 확인하고, AbstractUser, AbstractBaseUser을 사용해서 custom user model을 만드는 과정을 정리해본다. 지금 설정된 유저 모델은 무엇인가? settings 파일 어디에도 그런 변수는 없을 수 있다. 그러면 global settings에 그 값이 있을 것이다. global settings는 pip로 설치한 django 패.. 2022. 2. 1.
django rest framework의 serializer, view 추상화 과정 간단한 User 모델과 Serializer를 정의하고 추상화를 통해 반복되는 코드를 줄여보며 누가 마법을 부리는지 확인해보자. user/models.py GENDERS = [ ('M', 'Male'), ('F', 'Female'), ] class User(models.Model): name = models.CharField(blank=True, max_length=255) gender = models.CharField(blank=True, choices=GENDERS, max_length=1) created = models.DateTimeField(auto_now_add=True) user/serializers.py class UserSerializer(serializers.Serializer): pk .. 2020. 6. 25.
django model 정리 Django로 모델링할 때 항상 찾아보는 정보로 정확한 내용은 https://docs.djangoproject.com/en/3.0/ref/models/fields/#model-field-types에서 확인하면 좋다. Field Type AutoField auto increment 되는 IntegerField이다. 명시하지 않으면 아래와 같은 코드가 자동으로 생성된다. id = models.AutoField(primary_key=True) BigAutoField AutoField와 같지만 숫자 범위가 64bit이다. BigIntegerField BigAutoField와 같지만 값을 양수만 보장하지 않고, 음수인 경우까지 포함한다. BinaryField binary data를 저장하는 필드로 bytes, b.. 2020. 6. 13.
cookiecutter로 django 프로젝트 생성 cookiecutter를 이용해서 django 프로젝트를 쉽게 생성할 수 있다. 동작 방식은 다르지 않지만 파일 구조를 더 효율적으로 구분했기 때문에 기본으로 생성하는 방법보다 사용하기가 편리하다. $ pip install cookiecutter $ cookiecutter https://github.com/pydanny/cookiecutter-django coockiecutter로 프로젝트를 생성하면 수십 가지 질문을 하며 다양한 설정 파일을 쉽게 지정할 수 있다. project_name [My Awesome Project]: project_slug [my_awesome_project]: description [Behold My Awesome Project!]: author_name [Daniel Roy.. 2020. 6. 11.
Python 개발 가상환경 설정 시작이 반이라는 말이 과장처럼 느껴지지만 개발환경 설정하는 데에 있어서는 참 공감 가는 말이다. 물론 별다른 설정 없이도 코드 돌리는 건 큰 문제가 되지 않지만 이왕 하는 거 각 문제점을 생각해보면서 개발환경을 구축해보자. Python 버전 관리 python은 크게 2.x, 3.x 로 나뉘는데 문법부터 시작해서 다른 점이 많아 프로젝트 별로 python 버전이 다르면 실행 환경을 바꿔줘야 한다. 매번 python path를 바꾸거나 명령어를 다르게 치는 건 피곤하니 pyenv 를 사용한다. 비슷한 기능으로 virtualenv, pyvenv 가 있지만 내장 기능으로 사용할 수 있는 pyenv를 사용했다. pyenv는 기존 설치된 python과 별도로 관리되기 때문에 사용하고자 하는 버전을 추가로 설치해야 .. 2019. 10. 20.