장고 프로젝트를 처음 생성하면, url은 프로젝트 폴더에서 관리하게 된다. CRUD 기능을 가진 app을 만드는데 필요한 url 들이다. 겨우 하나의 app만 가진 장고프로젝트 인데도, 벌써 이렇게 url들이 많아졌다. 만약 여러 기능을 가진 프로젝트를 만든다면 project 폴더의 urls.py가 얼마나 복잡해질지는 안봐도 뻔하다. 그래서, url을 app 별로 관리해주는 것이 필요할 것 같다! 장고 url이 제공하는 include() 함수를 사용하면, 프로젝트의 urls.py를 기능별로(app별로) 편하게 관리할 수 있다. 1. app 폴더 안에 urls.py 파일 생성 기존에 project 폴더에 있던 urls.py의 내용을 그대로 가져와준다. admin 관련 url은 project 전체에서 관리해야하니 거기에 남겨두자! 2. project 폴더의 url path() 수정 include
base.html을 상속받은 자식 템플릿의 경우, 무조건 부모 템플릿의 main.css 파일도 같이 상속받는다. 만약 자식 템플릿에서 따로 적용하고 싶은 css 파일이 있다면 어떻게 해야할까? 예를들어, 새 글쓰기를 기능을 가진 new.html 파일은 Navbar 도 상속받아야하고, 글 작성 form을 위한 css도 따로 적용해줘야한다. 해결 방법은 아래와 같다. 1. 자식 템플릿 css 파일 생성 우선, new.css 파일을 static 폴더에 만들어준다. 2. 부모 템플릿의 head에 {%block%} 생성 new.css를 위한 extrahead라는 이름의 block을 base.html의 head 섹션에 정의해준다. {% block extrahead %} {% endblock %} 자식 템플릿의 head 섹션에서 파일별로 다르게 사용할 수 있는 `
장고에서는 css나 js같은 정적 파일들을 static 폴더에서 한번에 관리한다. 1. static 폴더 생성 app 폴더 안에 static 폴더를 생성하고, 그 안에 main.css 파일을 넣어준다. 2. base.html에 static 링크하기 만약 개별 페이지 마다의 css 파일을 만들었다면 똑같이 static 폴더에 넣어준 뒤 각 템플릿에서 static으로 링크하면 된다. 3. base.html 만들기 나는 codepen의 Fly-Out Nav를 가져와 사용했다. 모든 페이지에 들어갈 nav 요소이기 때문에 base.html 에 넣어준것이고, 각 페이지마다의 템플릿은 block content 에 담길 것이다. 만약 부트스트랩을 사용하고싶다면 아래 CDN을 head에 추가해주자!
템플릿 상속이란? html 문서 중 기본 뼈대가 되는 문서를 기본 템플릿으로 정하고, 이는 공통의 코드이므로 다른 문서에서 기본 템플릿의 코드가 필요하면 상속하여 가져다 쓰는 것. base.html 템플릿은 모든 템플릿이 상속해야 하는 템플릿으로 표준 HTML 틀을 갖춘 문서가 된다. 기본이 되는 템플릿을 'base.html'로 정한다. 1. templates 폴더에 base.html 생성 body 태그의 는 base.html을 상속한 템플릿에서 구현해야 하는 영역이 된다. 즉, block 외의 모든 요소들은base.html을 상속한 템플릿들에서 공통적으로 보여지게 된다. head태그의 메타데이터도 상속 받기 때문에 이를 이용해 부트스트랩 CDN을 모든 템플릿에서 일일이 다운받지 않고 사용할 수 있다. 2. home.html 에서 상속 각
블로그 model 만들기 와 이어지는 실습입니다. 이전 소스코드는 이 곳 을 참고하세요. 1. CRUD란? > create, read, update, delete 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/갱신/검색)을 가르키는 용어이다. 우리가 웹이든 앱이든 어떤 소프트웨어를 사용한다면 반드시 일어나는 행위일 것이다. 이전에 만들었던 블로그에 CRUD 중 create와 read에 해당하는 새 글 작성 기능을 추가해보자. admin 계정을 이용하지 않고, 사용자가 직접 포스트를 작성할 수 있도록 만들어볼 것이다. 조금 더 구체적으로 고민해보자면, 아래 기능이 필요할 것
helloworld 출력하기 와 이어지는 실습입니다. 이전 소스코드는 이 곳 을 참고하세요. 1. 객체(Object) 블로그 내 모든 포스트를 저장하는 부분을 만들어보자. 먼저 객체(object)에 대해서 조금 알고 있어야한다. 기본적으로 객체지향설계 개념은 현실에 존재하는 것을 속성과 행위로 나타내는 것을 말한다. 여기서 속성은 객체 속성(properties), 행위는 메서드(methods)로 구현된다. 2. 모델(Model) 장고에서 사용하는 모델은 객체로 만들고, 이 객체를 저장하면 그 내용이 자동으로 데이터베이스에 저장된다.
Django의 템플릿 언어(template language)는 강력함과 편리함 사이의 균형을 잡고자 설계되었다. 템플릿 언어를 사용하면 HTML 작업을 훨씬 수월하게 할 수 있다. 변수, 필터, 태그, 주석 등 4가지 기능을 제공한다. 장고 공식 문서에 나와있는 예제를 보면서 각 기능들을 공부해보자. 1. 템플릿 변수 템플릿변수를 사용하면 뷰에서 템플릿으로 객체를 전달할 수 있다. {{ 변수 }}와 같이 생겼다. 점(.) 은 변수의 속성에 접근할 때 사용한다. 위의 예제에서는 {{ section.title}} 와 같이 사용했다. 뷰에서 section객체를 html 문서로 보내 title 속성을 출력할 수 있도록 지원하는 것이다. 2. 템플릿 필터 템플릿필터는 변수의 값을 특정 형식으로 변환할 때 사용한다. 변수 다음에 파이프(|)를 넣은 다음 적용하고자 하는 필터를 명시한다.
장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크다. 하지만 장고에서는 같은 개념을 MTV(Model - Template - View)라고 부른다. 참고로 MVC패턴은 데이터(model), 사용자 인터페이스(view), 데이터 처리 로직(controller)을 구분해 한 요소가 다른 요소들에게 영향을 주지 않도록 설계하는 방식인데, 장고도 기본적으로 이 방식을 따르며 명칭이 조금 다를 뿐이다. 1. Model 모델은 데이터베이스에 저장되는 데이터를 의미한다. excel과 같은 표의 형태로 정리하여 데이터베이스에 넣는다고 생각하면 된다. 원래 DB를 다루기 위해서는 SQL이라는 언어를 알아야하지만, 장고는 이 SQL을 몰라도 DB 작업을 가능하게 해주는 ORM을 제공하기 때문에 공부할 내용이 훨씬 적다. > ORM이란? > > Object-Relational Mapping의 약자로, SQL이라는 언어 대
1. project 생성 가상환경이 켜진 상태에서 helloworld 라는 프로젝트 폴더를 생성한다. 터미널 경로를 생성된 프로젝트 폴더로 이동한다. 2. app 생성 manage.py 파일이 있는 프로젝트 폴더 내에 print 앱 폴더를 생성한다. 3. project 와 app 연결하기 app을 만들었지만 project는 그 app의 존재를 아직 모른다. 그래서 app을 만들었다고 등록해주는 절차가 필요하다. helloworld/settings.py 수정 settings.py 파일에 INSTALLED_APPS 영역에 print.apps.printConfig 을 추가해준다. print/apps.py 파일을 열어보면 printConfig 라는 클래스가 정의되어 있는데, 그것을 등록해주는 절차이다. 4. Template 만들기 template은 유저가 보는 화면이라 생각하면
web_flow 한 html 파일을 웹 서버에 띄우기 위해서, django는 어떤 일을 할까? 웹서버에 HELLO WORLD 를 출력하는 가장 간단한 장고 프로젝트를 통해 장고 내에서 html 파일, 즉 정보들이 어떻게 처리되는지 알아보자. 1. Django 프로젝트 시작하기 가상환경이 켜진 상태에서 아래 명령어를 입력해 프로젝트 폴더를 만든다. 프로젝트 이름을 helloworld 라고 했다고 가정하자. 그러면 helloworld 라는 폴더가 생기고, 그 안에 또 helloworld 폴더와 manage.py 파일이 생성된다. 같은 이름의 폴더가 두 개여서 헷갈릴 수 있으니 상위폴더 이름을 helloworld_project 같은 식으로 바꿔주는
1. 기본환경 세팅 git 설치하기 python 설치하기 잘 설치되었으면 설치된 버전이 뜬다. 2. 가상환경 생성 및 실행 > Django개발을 할때는 묻지도따지지도말고 가상환경부터 키고 시작한다. 2.1. 생성 제일 마지막에는 사용할 가상환경 이름을 적어주면 되는데, 보통 myvenv 같은 네이밍을 사용한다고 한다. 작업 폴더안에 myvenv 라는 폴더가 생겼으면 성공. 2.2. 실행 source 대신 . 을 입력해도 된다. 가상환경을 실행한다고 크게 달라지는 건 없다. 터미널 명령어 줄 위에 (myvenv) 라는 게 생겼으면 가상환경이 실행 중이라는 뜻이다. 2.3. 종료 근데 그냥 터미널 혹은 vscode를 꺼도 종료된다. 3. Django 설치하기 꼭