Django

    다대일 관계 구현하기

    Doit Django 13장 1. 작성자 추가하기 작성자 정보를 담을 author 필드를 구현해야 한다. author 필드에 관련해 아래의 기능을 수행할 수 있도록 구성해야 한다. 사용자가 포스트를 작성했을 때 사용자명을 문자열로 저장 사용자가 사용자명을 바꿨을 때 이전에 작성한 글의 작성자명도 함께 바뀌어야 함 사용자가 탈퇴하거나 글을 삭제하면 작성자명을 unknown으로 표시해야 함 작성자 정보를 담은 author 필드에는 여러가지 기능이 필요하므로 따로 만든 다음 포스트와 연결해야 한다. 작성자 정보 하나에 여러 포스트를 연결하는 다대일 관계에는 ForeignKey를 활용해야 한다. 먼저 ForeignKey로 연결된 다른 모델의 레코드가 삭제되었을 때 함께 삭제되는 방식으로 author 필드를 구현..

    템플릿 모듈화 및 상속

    템플릿을 왜 모듈화할까? 편하니까! 일반적으로 메인 영역을 제외하고 나머지 영역은 디자인이 일관되게 유지되어야 한다. 즉, 그 '나머지 영역'을 미리 만들어놓고 가져다 쓰면 편할 것이다. 1. 프로젝트 전체적으로 쓰이는 템플릿 구성하기 우선, templates 폴더를 생성한다. 그리고 base.html, navbar.html, footer.html을 생성한다. index.html에서 해당 영역을 가져와 base.html에 입력 이 base.html은 부모가 되어 자식에게 상속시켜야 한다. 그렇게 하기 위해, main area block을 명시해준다. 이제, index.html로 가서 main area block을 정의해준다. extends를 추가해 base.html의 내용을 상속받겠다는 언급도 해준다. ..

    페이지 구성 개선하기

    Doit Django의 10장 실습을 정리한 글입니다. 1. 포스트 목록 페이지의 문제 파악하기 Head Image 할당을 해제하고 blog 페이지에 들어가면 즉, 대표 이미지가 없어도 에러를 발생시키지 않도록 해야 한다. 2. If문으로 조건에 따라 이미지 보여주기 가장 간단한 조건문인 if-else문으로, 대표 이미지가 없을 때는 텍스트만 보이게 해보자. p.head_image가 존재하면 True, 그렇지 않다면 False가 적용된다. 상세페이지에도 적용시키자. 3. 첨부 파일이 있는 경우 다운로드 버튼 만들기 방문자가 포스트에 첨부된 파일을 내려받을 수 있는 버튼을 만들어보자. 위에서 a 태그 내의 class는 버튼 디자인을, role은 button 형식임을, download는 파일을 내려받을 수 ..

    미디어 파일 관리하기

    1. 이미지 폴더 지정하기 장고는 이미지 업로드를 위한 ImageField를 제공한다. 이것을 사용하려면, 사용자가 업로드한 이미지를 어디에 저장할지 먼저 설정해야 한다. settings.py를 아래와 같이 수정하자. 이는 프로젝트 폴더 아래에 '_media'라는 폴더를 만들고 그 안에 이미지를 저장하도록 한다. 이제 model을 바꿔보도록 하자. upload_to로 이미지를 연-월-일을 기준으로 저장하고, blank=True는 '필수 항목 아님'을 의미한다. 이제 마이그레이션을 해야 하는데, 그 전에 Pillow를 설치해야 한다. Pillow 라이브러리가 있어야 ImageField를 사용할 수 있다. 이제 마이그레이셔늘 수행하자. 이제 admin으로 접속한 뒤 이미지 업로드를 수행해보자 이미지를 확인하..

    부트스트랩과 정적 파일 적용하기

    Doit! 장고 교재의 9장 실습 내용을 정리한 글입니다. 8장까지는 장고에 대한 설명과 기능 구현을 다루었고, 9장에서는 웹 사이트를 꾸며줄 CSS나 이미지 파일 및 디자인에 대하여 다룰 것이다. 1. 포스트 목록 페이지에 부트스트랩 적용하기 부트스트랩: 부트스트랩(Bootstrap)은 웹사이트를 쉽게 만들 수 있게 도와주는 CSS, JS 프레임워크이다. 하나의 코드로 휴대폰, 태블릿, 데스크탑까지 다양한 기기에서 작동하게 만들 수 있으며, 다양한 기능을 제공하여 사용자가 쉽게 웹사이트를 제작, 유지, 보수할 수 있도록 도와준다.(출처: 위키백과) 부트스르랩 페이지: https://getbootstrap.kr/ Bootstrap 강력하고 확장 가능하며 기능이 풍부한 프론트엔드 툴킷. Sass로 빌드 및..

    장고 프로젝트에서 앱, 웹 페이지 개발하기

    Doit Django의 8장을 정리한 글입니다. 1. blog앱과 single_pages 앱 만들기 startapp으로 원하는 앱을 만든다. 2. 앱 등록 settings.py의 INSTALLED_APPS에 사용자 정의 앱을 등록한다. 앱 등록하는 김에 기본 환경 설정을 한다. 3. 변경 내용 커밋하기 4. 블로그 앱의 Post(포스트) 모델 만들기 블로그 앱에 Post 모델 만들기: 포스트가 가지는 정보인 제목(title), 내용(contents), 작성일(create_at), 작성자 정보(author)에 대한 정의를 수행한다. Post 모델은 models 모듈의 Model 클래스를 확장해서 만든 파이썬 클래스이다. 여기서 author 필드는 나중에 모델에서 외래키를 구현할 때 다룰 것이므로 주석 처리..

    Django settings.py, manage.py 정리

    1. settings.py 환경변수 설명 DEBUGE 디버그 모드 설정 INSTALLED_APPS PIP로 설치한 앱 또는 본인이 만든 앱 추가 MIDDLEWARE_CLASSES Request와 Response 사이의 주요 기능 레이어 TEMPLATES 장고 template 관련 설정 및 실제 뷰(html. 변수) DATABASES 데이터베이스 엔진의 연결 설정 STATIC_URL 정적 파일의 URL 2. manage.py ex) python manage.py 명령어 명령어 설명 startapp 앱 생성 runserver 서버 실행 createsuperuser 관리자 생성 makemigrations app app의 모델 변경 사항 체크 migrate 모델 변경 사항을 데이터베이스에 반영 shell 쉘을 ..

    Django 기본 이론 및 실습

    1. Django 소개 Java에 Spring이 있다면, Python에는 Django가 있다. Django는 아래와 같은 특징이 있다. Batteries Included 다양한 사용 가능 안정성 확장성 좋음 Maintainable 모 신문사의 웹 팀에서 2003년부터 개발되었으며, 초창기에는 공통 모듈, 코드, 패턴을 뽑아내 재사용하는 형태였고, 그 후 일반적인 웹 프레임워크로 진화했다. 2005년 7월에 오픈소스로 공개되고, 2008년 9월에 1.0버전이 배포되었다. 2. Django의 구조 - MTV 모델 여기서 MTV는 각각 Model, Template, View(코디네이터)를 의미한다. 모델로 자료의 형태를 정의하고, 뷰로 어떤 자료를 어떤 동작으로 보여줄지 정의하고, 템플릿으로 웹 페이지에서 출..