본문 바로가기

Python28

[Python3] class property, setter, to_json class 를 사용하여 모델링 하기 python에서는 getter, setter를 만드는 것 보다 property를 사용하는 것이 좋다. propery 와 getter, setter 의 비교는 여기를 참조한다. class TestModel: def __init__(self): self._id = None self._name = None @property def id(self): return self._id @id.setter def id(self, id): self._id = id @property def name(self): return self._name @name.setter def name(self, name): return self._name def to_json(self): return jso.. 2017. 8. 7.
[Django] Caches, Redis Django에서 redis에 접속하기 위한 방법. settings.py 에 CACHES 를 추가한다. CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': 'redis://:6379/0','OPTIONS': {...}}} 실제 사용 방법 from django.core.cache import cache print(cache.get('KEY')) 2017. 5. 24.
[Django] request.data immutable django 에서 request.data의 데이터를 수정하려고 하면 immutable 에러가 발생한다. 위 에러를 해결하기 위해서는 아래의 방법을 사용한다.단순히 request.data 를 사용하고자 하는 경우단순히 request.data 를 가져와서 key를 추가하고자 하는 경우는 아래의 방법으로 쉽게 해결할 수 있을 것이다.아래는 POST의 경우만 체크한 거니 1. copy() 함수 사용data = request.data.copy()data['newKey'] = value2. __setitem__() 함수 사용request.data.__setitem__(newKey, value)DB에 저장 전, request.data 에 key를 추가하고자 하는 경우이 경우는 위의 함수를 사용해서는 해결이 안 될 것.. 2017. 1. 13.
[Python] 클래스 메소드와 스태틱 메소드 (Class Method and Static Method) Python 의 인스턴스 메소드와 클래스 메소드, 스태틱 메소드에 대해서 아주 잘 설명이 되어있다.큰 차이를 말하면 인스턴스 메소드는 자신의 인스턴스에 대해서만 적용이 되지만 클래스 메소드는 전체 인스터스에 적용이 된다. ---- 나중에 정리할 것 --- http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-oop-part-4-%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%A9%94%EC%86%8C%EB%93%9C%EC%99%80-%EC%8A%A4%ED%83%9C%ED%8B%B1-%EB%A9%94%EC%86%8C%EB%93%9C-class-method-and-static-method/ 2017. 1. 2.
[Django] settings 파일에 선언한 값 가져오기 API 호출을 위한 HOST같은 공통적인 변수는 settings 파일에 변수를 지정하여 나중에 값이 바뀌어도 이 값을 사용한 곳의 코드를 전부 바꾸지 않도록 개발해야 한다. # in settings.pyTMP_HOST = '127.0.0.1' 만약 settings.py(또는 dev.py 등) 파일에 위의 변수를 선언해 놨다면 값을 가져올 때는 아래와 같이 가져올 수 있다. # in views.py (변수 값을 사용하기 위한 파일)from django.conf import settings TMP_HOST = getattr(settings, 'TMP_HOST', 'localhost') 위와 같이 getattr() 함수로 가져온 모듈 안에서는 TMP_HOST 변수로 settings.py 안에서 지정한 값을 사.. 2016. 12. 28.
[Django] tuple' object has no attribute '_meta' Django 를 사용하여 만든 API 호출 시에 아래와 같은 에러가 발생한 적 있다. Error message: tuple' object has no attribute '_meta' 원인은.. 어이 없었지만 serializer 에서 model 명 옆에 ',(콤마)'가 있어서 나는 에러였다. class UserSerializer(serializers.ModelSerializer): profile = ProfileSerializer() class Meta: model = User, fields = ('username', 'email', 'profile') 위의 예제처럼 Meta 클래스 안에서 User 모델 옆에 , 를 찍어줘서 발생하는 에러였다. 즉 tuple 오브젝트를 지원안한다는 얘기이다. 2016. 12. 22.
[Django] settings.py 분리하기 Django project 에서 프로젝트의 설정을 나타내는 파일인 settings.py 모듈. 여러 사람이 한 프로젝트에서 작업을 하다보면 데이터베이스 설정을 바꿔가며 작업을 하는 경우가 있다. 예를 들어, 테스트를 하기 위해서 자신의 로컬 데이터베이스로 설정값을 바꿔놓고 저장소에 push 하면 이 코드를 실제 데이터베이스 정보로 바꿔야 하는 작업이 필요하다. 이러한 상황은 생각보다 자주 일어나며 이 상황이 반복되면 git 저장소에 불필요한 활동 기록이 쌓이게 된다. 그래서 이 페이지에서는 settings.py 모듈을 분리하여 실제 데이터베이스와 로컬 데이터베이스 설정 값을 나눠서 관리하는 방법을 설명할 것이다. 프로젝트 생성 일단 작업을 시작할 프로젝트를 생성한다. # 장고가 설치되어 있지 않다면 장고.. 2016. 11. 16.
[Django] Database Dynamic Access 큰 프로젝트를 구현하다 보면 한 프로젝트 내에서 여러 데이터베이스와 연결하는 경우가 많다. 기본적으로는 django documents 사이트에 나와있듯이 settings 에 사용할 데이터베이스 정보를 추가해 놓고 using() 을 사용하거나 router.py 파일을 추가하여 데이터베이스에 연결하는 방법이 있다. 하지만, 셀 수 없이 많은 데이터베이스에 다이나믹하게 연결해야 하는 경우는 위와 같은 방식으로 사용하면 안된다. 이 페이지에는 장고 프로젝트에서 다이나믹하게 데이터베이스에 접근하는 방법에 대해 설명할 것이다. 데이터베이스 연결 방법from django.db import connections external_db = {'ENGINE': 'django.db.backends.postgresql_psyc.. 2016. 11. 14.