Django | WRANINGS: null has no effect on manytomanyfield
·
Django
기존 POST 모델과 TAG 모델을 ManyToManyField를 사용해 다대다 관계로 연결하고자 했다. tags 필드를 빈칸으로 남겨둘 수 있도록 null=True, blank=True로 설정하고 마이그레이션을 진행했더니, 다음과 같은 경고메시지가 출력되었다. ManyToManyField는 기본적으로 null=True가 설정되어 있기 때문에 우리가 tags에 입력한 null=True는 효과가 없다는 의미이다. 따라서, tags에서 null=True를 지워주고 마이그레이션을 진행하면 경고메세지 없이 정상적으로 마이그레이션 된다.
Django | 장고 셸 플러스(shell plus) 사용하기
·
Django
장고 셸 플러스(shell plus)는 장고 셸(Django shell)보다 좀 더 편하고 예쁜 환경에서 사용할 수 있다. 터미널에서 pip install django_extensions을 입력해 django_extensions을 설치한다. 그다음 pip install ipython을 입력해 ipython을 설치한다. 장고 프로젝트에서 django_extensions를 사용하기 위해 settings.py에 들어가 INSTALLED_APPS에 django_extensions을 추가해 준다. 이제 터미널에서 python manage.py shell_plus를 입력하면 다음과 같이 셸 플러스가 실행된다. 셸 플러스에서는 기본 장고 셸과 다르게 파이썬 코드에 맞게 글자 색상이 다르게 표현되고, for문이나 if..
Django | 테스트 주도 개발(TDD)
·
Django
웹 사이트 제작의 기본 과정은 구현 → 웹 브라우저로 직접 확인 → 성공 → 개선점 찾기를 반복한다. 구현: 만들고 싶은 요소를 떠올리고 소스 코드를 작성 웹 브라우저로 직접 확인: 웹 브라우저로 들어가서 잘 작동하는지 일일이 테스트 성공: 제대로 작동하기 않으면 다시 소스 코드를 들여다보고 수정하면서 성공시킴 개선점 찾기: 다음에는 무엇을 더 개선해야 할지, 무엇을 개발해야 할지 고민을 한 후 다시 구현 단순한 웹 사이트를 만들 때는 위 방식이 효율적일 수 있지만, 모델의 구조가 복잡하고, 기능이 다양하고 페이지도 많은 웹 사이트를 만들 때는 프로그램이 복잡해질수록 추가한 기능 사이에 상호 연관성이 점점 늘어나기 때문에 효율적이지 않을 수 있다. 하지만 개발할 프로그램이 복잡해질수록 매번 소스 코드를 ..
Django | 장고 MVT(Model-View-Template) 패턴
·
Django
장고의 MVT 패턴은 일반적인 웹 프로그래밍의 MVC 패턴의 개념과 비슷하다. MVC 패턴은 Model-View-Controller로 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식을 의미한다. 파이썬의 장고 프레임워크는 MVC가 아닌 MVT 패턴으로 Model-View-Template이다. 모델(Model): 데이터베이스에 저장되는 데이터 뷰(View): 프로그램 로직이 동작해 데이터를 가져오고 처리한 결과를 템플릿에 전달 템플릿(Template): 사용자에게 보이는 UI 부분 장고 MVT 패턴은 다음과 같은 과정으로 작동한다. 유저가 ~~~.com 이라는 이름의 서버를 요청한다. urls.py에서 매핑된 뷰(view)를 호출한다..
Django | 장고 한국 시간 설정하기
·
Django
장고에서 기본 설정 시간은 그리니치 표준시인 UTC이다. UTC는 한국과 9시간 차이가 나기 때문에 한국 기준 오후 7시에 작성한 글이 웹 페이지에서 오전 10시에 작성된 것으로 나타날 수 있다. 실제로, 한국 시간으로 설정해주지 않으면 'Note: You are 0 hours ahed of server time'이라는 문구가 나타난다. 이 시간을 한국 시간으로 바꾸기 위해서는 settings.py를 수정하면 된다. 기본적으로 settings.py는 아래 사진과 같이 TIME_ZONE="UTC"로 지정되어 있다. 이 부분을 TIME_ZOME="Asia/Seoul"로 바꿔주면 한국 시간으로 설정할 수 있다. 또한, USE_TZ=False로 지정해 준다. USE_TZ은 models의 timezone에 변경된..
Django | 장고 앱 생성하기(startapp)
·
Django
모든 장고 프로젝트는 1개 이상의 앱으로 구성되어 있다. 장고에서 앱은 특정 기능을 수행하는 단위 모듈을 의미한다. ex) 방명록 기능, 갤러리 기능 등 앱을 만들기 위해서는 다음과 같은 명령어를 입력하면 된다. python manage.py startapp (앱 이름) single_pages라는 이름의 앱을 만드는 명령어이다. 이 명령어를 실행하면 아래 사진과 같이 디렉터리(dir)에 single_pages라는 이름의 새로운 폴더가 생긴 것을 볼 수 있다. 파이참에서도 새로운 폴더가 생겼음을 확인할 수 있으며, 새로 생긴 앱에는 admin, apps, models, test, views와 같은 파일이 생성되어 있다. 참고: Do it! 장고+부트스트랩 파이썬 웹 개발의 정석