Django | MarkdownX로 마크다운 적용하기
·
BackEnd/Django
터미널에서 django-markdownx를 설치한다. pip install django-markdownx 새로운 라이브러리를 설치하면 settings.py에서 해당 모듈을 등록시켜 준다. markdownx는 urls.py에도 경로를 추가해 주어야 원활하게 작동한다. settings.py와 같은 위치(프로젝트 폴더)에 있는 urls.py에 경로를 추가해 준다. models.py에서 Post 모델의 content 필드를 MarkdownField로 바꿔준다. from markdownx.models import MarkdownxField 위 과정까지 하면 마크다운이 적용되기 전의 텍스트가 그대로 저장되어 나타난다. 따라서 화면에 마크다운 문법으로 작성된 content 필드 값을 HTML로 변환하기 위해서는 ma..
Django | crispy-forms 사용하기(bootstrap5)
·
BackEnd/Django
포스트 작성 페이지에서 로 만들어진 입력 폼이 한쪽에 치우쳐 있어 모양이 예쁘다고 볼 수 없다. 이런 문제를 crispy-forms를 사용하여 오른쪽 그림과 같이 해결할 수 있다. bootstrap4 기준으로는 pip install을 이용해 하나만 설치해 주면 되지만 bootstrap5에서는 추가로 하나를 더 설치해주어야 한다. pip install django-crispy-forms pip install crispy-bootstrap5 그다음 설치한 모듈들을 settings.py에 등록시켜주어야 한다. INSTALL_APPS에 crispy-forms와 crispy_bootstrap5를 등록시켜 주고, 맨 아래에 bootstrap5를 사용하겠다고 지정한다. 그런 다음 포스트 작성 페이지를 구성하는 htm..
Django | WRANINGS: null has no effect on manytomanyfield
·
BackEnd/Django
기존 POST 모델과 TAG 모델을 ManyToManyField를 사용해 다대다 관계로 연결하고자 했다. tags 필드를 빈칸으로 남겨둘 수 있도록 null=True, blank=True로 설정하고 마이그레이션을 진행했더니, 다음과 같은 경고메시지가 출력되었다. ManyToManyField는 기본적으로 null=True가 설정되어 있기 때문에 우리가 tags에 입력한 null=True는 효과가 없다는 의미이다. 따라서, tags에서 null=True를 지워주고 마이그레이션을 진행하면 경고메세지 없이 정상적으로 마이그레이션 된다.
Django | 장고 셸 플러스(shell plus) 사용하기
·
BackEnd/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)
·
BackEnd/Django
웹 사이트 제작의 기본 과정은 구현 → 웹 브라우저로 직접 확인 → 성공 → 개선점 찾기를 반복한다. 구현: 만들고 싶은 요소를 떠올리고 소스 코드를 작성 웹 브라우저로 직접 확인: 웹 브라우저로 들어가서 잘 작동하는지 일일이 테스트 성공: 제대로 작동하기 않으면 다시 소스 코드를 들여다보고 수정하면서 성공시킴 개선점 찾기: 다음에는 무엇을 더 개선해야 할지, 무엇을 개발해야 할지 고민을 한 후 다시 구현 단순한 웹 사이트를 만들 때는 위 방식이 효율적일 수 있지만, 모델의 구조가 복잡하고, 기능이 다양하고 페이지도 많은 웹 사이트를 만들 때는 프로그램이 복잡해질수록 추가한 기능 사이에 상호 연관성이 점점 늘어나기 때문에 효율적이지 않을 수 있다. 하지만 개발할 프로그램이 복잡해질수록 매번 소스 코드를 ..
Django | 장고 MVT(Model-View-Template) 패턴
·
BackEnd/Django
장고의 MVT 패턴은 일반적인 웹 프로그래밍의 MVC 패턴의 개념과 비슷하다. MVC 패턴은 Model-View-Controller로 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식을 의미한다. 파이썬의 장고 프레임워크는 MVC가 아닌 MVT 패턴으로 Model-View-Template이다. 모델(Model): 데이터베이스에 저장되는 데이터 뷰(View): 프로그램 로직이 동작해 데이터를 가져오고 처리한 결과를 템플릿에 전달 템플릿(Template): 사용자에게 보이는 UI 부분 장고 MVT 패턴은 다음과 같은 과정으로 작동한다. 유저가 ~~~.com 이라는 이름의 서버를 요청한다. urls.py에서 매핑된 뷰(view)를 호출한다..