프레임워크(Framework)

myGoodPlace
[Spring] @Component 와 @Autowired를 통해 IoC실현하기
IoC(Inversion of Control) 란 객체 생성 및 호출과 같은 객체 관리 주체를 개발자에서 프레임워크인 스프링에게 넘겨줌으로써 역할이 바뀌는 것을 말한다. 이를 실현하려면, 스프링은 어떤 객체를 관리해야하는지 알고, 어느부분에 객체를 사용해야 하는지 알 필요가 있다. 그렇다면, 우리 개발자는 스프링에게 1. 어떤 객체를 관리해야하는지2. 어느 부분에 관리를 부탁한 객체를 사용해야 하는지알려줘야 한다. 어떤 객체를 관리해야하는지 알려주기 위해, @Component Anotation을 사용한다.어느 부분에 관리를 부탁한 객체를 사용해야하는지 알려주기 위해, @Autowired Anotation을 사용한다. 프로젝트를 실행시키면, 스프링은 모든 클래스를 보면서, 이렇게 작성한 Anotation을..
[Spring] 객체지향적인 개발을 하도록 도와주는 IoC와 DI
어디서 객체를 생성해서, 이 객체를 어느시점에 호출해줘야하는걸까? 이러한 객체의 생명주기를 고민하면서 구현을 했던 개발자들에게, 객체지향적으로 개발을 할 수 있도록 틀을 제공하여 비즈니스 로직에 더 신경쓰도록 도와주는 것이 Spring이라는 프레임워크다. 즉, 스프링은 객체 지향 언어인 자바가 객체 지향적인 언어로써 구현이 될 수 있도록 틀을 제공한다. 얼마나 이러한 고뇌가 힘들었으면, 드디어 개발자에게 봄이왔다며 Spring이라 이름을 지었을까..? 그렇기 때문에, 스프링은 자바와 별개가 아니며, IoC와 DI는 객체지향적 관점에서, 스프링을 사용하는 중요한 이유가 된다. IoC(Inversion of Control) : 제어의 역전 기존의 객체를 생성하고, 소멸하는 시점을 결정했던 개발자의 역할(제어..
코드 비교 사이트 이용기
django는 관리자 페이지를 기본으로 제공한다는 장점이 있습니다. 이번 프로젝트(version2)에서는 기본으로 제공해주는 관리자 페이지 admin을 좀 더 꾸밀 수 있는 django-jazzmin을 사용해보았습니다. jazzmin을 이번 프로젝트에 적용하기 전, 이전 프로젝트(version1)에서 어떻게 사용하였는지 확인해보기 위해 코드 비교 사이트를 이용하게 되었습니다. 이번 프로젝트도 이전 프로젝트와 마찬가지로 django-jazzmin을 admin에 적용하기로 했다. 적용 전, 기존 프로젝트에서는 https://github.com/farridav/django-jazzmin/blob/master/jazzmin/templates/admin/base.html를 어떻게 활용하였는지 분석하고자 하였다. ..
[Django] settings 파일 분리하기
settings.py 란? 이름에서도 알 수 있듯이 프로젝트에 관한 환경을 설정하는 파일이다. 프로젝트에 celery, restframework 등과 같은 모듈을 추가하게 되면, settings.py에 설정해야 하는 부분들이 추가되기 때문에 settings.py가 복잡해진다. 이전에는 개발환경, 배포환경 등 실행환경별로 settings.py를 분류하여 관리하였는데, 이번에 프로젝트를 진행하면서 settings.py를 기능별로도 분류하여 관리한다는 것을 알게 되었다. settings.py를 기능(모듈)별로 분리해보자. 프로젝트명: backend 1. settings 디렉터리 생성 django 프로젝트 안에 settings 이름으로 디렉터리를 생성한다. 생성한 settings 디렉터리 안에 __init__...
[Django] on_delete 옵션
on_delete "👩🏻‍💻이번에 제대로 알아두자." 지금까지는 과제규모의 소규모 프로젝트이다보니, 외래키를 사용할 때 on_delete=models.CASCADE를 사용해왔는데, 이번 프로젝트를 하면서 기능에 따라, 사용자의 요구사항에 따라 다른 옵션들을 줘야했다. 옵션을 올바르게 선택하려면, 어떤 경우에 어떤 옵션이 필요한지 정확히 이해 할 필요성을 느꼈다. 어떤 하나의 속성에서 ForeignKey로 바라보고 있는 객체(참조된 객체)가 삭제될 때, 참조하고 있는 해당 속성(참조하는 객체의 속성)이 어떠한 동작을 할 지(속성값을 처리하는 방법)에 대한 옵션 models.CASCADE 참조된 객체가 삭제될 때, 참조하는 객체도 삭제함 ex) 포스팅과 포스팅에 대한 댓글 models.PROTECT 참조된 ..
[Django/Field]null vs blank
데이터 모델 작성 시, 자주 사용하는 필드 옵션인 null과 blank의 차이점을 제대로 이해하고 있지 않은 것 같아 정리해보기로 하였다. 더보기 + 추가 blank = True null = False default = "어떤 값" default를 초기값이라고만 생각했었는데, default를 de와 fault 로 나눠서 생각해보면 실패(오류)를 제거하다, 없애다라고 보면 blank는 입력 시 유효성 검사와 관련되어 있을 뿐, DB와는 관련이 없다. 즉, null=False라면 빈값이 들어가지 못하므로, 실패를 없애기 위한 값으로 default로 정한 "어떤 값"이 들어가게 된다. Field.null DB와 관련된 옵션으로 데이터가 없다는 의미를 가진다. Django에서 CharField, TextFiel..
[Django] Django 설치 및 프로젝트 생성
가상환경 myvenv에서 Django를 설치하고 프로젝트와 앱을 생성해보자. 가상환경 생성 1. 폴더 생성 후 이동 mkdir 디렉터리명 cd 디렉터리명 2. 가상환경 생성 python3 -m venv 가상환경명 3. 가상환경 실행 source 가상환경명/bin/activate # 가상환경 종료 deactivate Django 설치 1. pip 업그레이드 pip install --upgrade pip 2. Django 설치 pip install django django가 잘 설치되었는지, 버전도 함께 확인하기 pip list Django 프로젝트 및 앱 생성 1. 프로젝트 생성(2가지 방법) django-admin startproject 프로젝트명 django-admin startproject 프로젝트명..
[Django|Postgre]postgreSQL설치 및 연동
postgreSQL설치 및 연동하기 Django에서 postgreSQL을 설치하고 연동해보자 1 postgreSQL 설치 및 실행 $ brew install postgresql postgreSQL을 설치하는 명령어입니다. $ brew services start postgresql postgreSQL서비스를 실행시켜주는 명령어입니다. $ pip install psycopg2 postgreSQL은 파이썬으로 작성되었고, 파이썬에서 DB 연결을 위해 psycopg2를 사용합니다. 즉, postgreSQL을 사용하기 위해 psycopg2를 설치합니다. 2 postgreSQL 접속 $ psql postgres postgreSQL DB에 접속하는 명령어입니다. 3 DB생성 및 연결 postgres# \dn \dn명..
sooyeon-kr