본문 바로가기

web/Django

(43)
django query 기초2 일반 ORM 모델 정의 class Country(models.Model): name = models.CharField(max_length=30) class City(models.Model): name = models.CharField(max_length=30) country = models.ForeignKey(Country, on_delete=models.CASCADE, relatec[ame='cities') population = models.PositiveIntegerField() 데이터 추가 >>> temp = ["Brazil","Turkey","Italy","Bangladesh","Canada","France","Peru","Argentina","Nigeria","Australia","Iran",..
django query 기초1 모델 정의 class Product(models.Model): name = models.CharField(max_length=30) price = models.IntegerField(default=0) stock = models.IntegerField(default=0) Create >>> from polls.models import Product >>> p = Product(name="coffee", price=4000, stock=1) >>> p.save() >>> p = Product(name=“water", price=1000, stock=10) >>> p.save() >>> p = Product(name=“chocolate", price=5000, stock=20) >>> p.save() bul..
[django] 데이터베이스 여러개 사용하기 (django multi db) 기존 MSA 형태로 구축되어 API를 호출하던 방식을 직접 디비에 붙어서 수행하는 형식으로 바꾸기 위해 django에서 두개 이상의 디비를 바라보도록 하는 과정에서 글을 씁니다. (..왜 MSA에서 모놀리스로 가냐고 물으신다면.... 한시간에 1만개의 내부 API 콜을 견뎌야 하는데....돈이 없습니다. ㅜㅡㅜ) 1. settings에 디비 정보 추가 settings에 기존 디비 설정이 있는 DATABASES에 추가로 이용할 디비의 정보를 넣어줍니다. 저의 경우 predict라는 이름으로 추가정보를 넣었습니다. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.getenv('POSTGRES_DB'), 'USER..
django cross domain allow middleware 도저히 django-cors-headers 가 설치 되지 않아서 미들웨어로 처리 했다. (이유는 아직도 모른다.) from django import http try: import settings XS_SHARING_ALLOWED_ORIGINS = settings.XS_SHARING_ALLOWED_ORIGINS XS_SHARING_ALLOWED_METHODS = settings.XS_SHARING_ALLOWED_METHODS XS_SHARING_ALLOWED_HEADERS = settings.XS_SHARING_ALLOWED_HEADERS except: XS_SHARING_ALLOWED_ORIGINS = '' XS_SHARING_ALLOWED_METHODS = ['POST', 'GET', 'OPTIONS'..
django migrate 칼럼이 생성 안될때 ( 꼬였을때) 로컬과 실서버의 디비의 migrate가 꼬여서 개발한 컬럼이 반영이 안될때!! 컬럼은 처음부터 소스에 반영이 아닌 8번에서 반영되어야 합니다!! (git으로 잠시 stash로 넣어놨다가 8번에서 꺼내세요) 해당 디비의 django_migrations 테이블 데이터 삭제 (truncate) python3 manage.py makemigrations python3 manage.py showmigrations python3 manage.py migrate --fake components ( "django_content_type" 에 name 이 없다고 에러가 나면 하단을 참조하세요.) 마이그레이션 파일 삭제 find . -path "*/migrations/*.py" -not -name "__init__.py"..
EFK docker + django logger 커스텀 EFK의 설치는 아래의 포스팅을 참조했습니다. https://lng1982.tistory.com/281 EFK Stack 구축 using Docker compose Elasticsearch + Fluentd + Kibana 조합을 EFK Stack이라 부른다. 참고로 Elasticsearch + logstash + Kibana 조합은 ELK Stack 이다. Fluentd : 오픈소스 log collector Elasticsearch : Lucene 기반 분산 검색.. lng1982.tistory.com 위의 포스팅을 잘 따라 했다면 kibana에서 로그를 볼수 있는 화면이 나온다. 그러면 실제 django의 logger를 전송해보자. 1. django-fluentd 패키지 설치 $ pip install..
django models.OneToOneField는 변경할때 생성이 됩니다. 다른 프레임워크를 하다가 다시 django를 하다가 당혹스러운 경험입니다. django의 models.OneToOneField는 데이터가 default시 (데이터 변경이 없다면) 해당 row가 생성되지 않습니다. 위와 같은 관계를 가질때 보통 user를 생성하면 user_profile도 디폴트로 생성됩니다. (보통의 orm에선 말이죠..) 하지만 django에서는 디폴트로 생성되지 않습니다!!!!!! 생성시 profile의 데이터를 변경하면 그때 생성됩니다. 만일 디폴트로 생성후 profile이 없는 상태에서 profile에 참조하게 된다면?? 에러가 터지죠. (저와 같이 말이죠.. 머리도 터집니다.) 넵 방법은 있습니다. @receiver(post_save, sender=User) def create_..
nginx + uwsgi 연동 uwsgi 연동 에서 이어짐 nginx 설치 $ sudo apt-get install nginx nginx에 프로젝트 설정 파일 추가 $ cd /etc/nginx/sites-available/$ sudo vi django_project.confserver { listen 80; # 수신 포트 설정 server_name _; # 도메인 설정 ip로 할경우 언더바 _ 로 하면 됨 location / { # 요청을 전달할 소켓 파일 지정 (해당 파일은 uwsgi.ini에서 socket로 지정했음) uwsgi_pass unix:///tmp/django_project.sock; include uwsgi_params; # uwsgi 사용, 리눅스에서 소켓은 파일처럼 취급된다. }} /etc/nginx/sites-e..