본문 바로가기

웹/Django

(11)
[Django] 모델 이해하기 , 데이터베이스/ 2021.09.17 * 참고 자료 : 코드잇 Django 강의 1. 모델이란? 모델은 데이터의 구조를 잡아주고 정의된 구조를 기반으로 데이터베이스와 소통하는 역할을 한다. (1) 데이터의 구조 데이터의 구조란 우리가 저장할 정보들의 형태를 말한다. 메뉴판을 예로 들어보자. 메뉴판은 음식이름, 설명, 가격등으로 구성이 되어 있다. 여기서 음식이름과 설명은 문자열(str) 형태로 저장하면 되고, 가격은 정수(int)형태로 저장하면 된다. 이런식으로 각각의 데이터구조와 형식을 저장하는 것을 데이터모델링이라고 한다. 데이터모델링은 쉽게 말해 우리 서비스의 요구사항에 맞게 데이터의 구조를 짜는것이며 데이터를 어떤식으로 저장해야할 지 고민하는 과정이다. 그렇다면 실제로 데이터를 저장하는 곳은 어디일까? (2) 데이터베이스 실제로 데이..
[Django] 우아한 URL / 2021.09.10 * 참고 자료 : 코드잇 Django 강의 1. 우아한 URL 장고에서 URL을 처리하는 방식을 우아한 URL(Elegant URL)이라고 한다. URL을 우리가 원하는 형태로 구성할 수 있고 직관적이고 알아보기 쉬운 구조로 만들 수 있다는 장점이 있다. 2. 모든 메뉴에 대해 상세 페이지 만들기 만약 한 메뉴에 대해 한 가지의 url을 만들어준다면 100개의 메뉴가 있다면 100개의 url을 추가해주는 것과 같다. 이것은 너무 비효율적이다. 이럴 때 이용하는 게 경로 변수를 이용한 동적 URL (Dynamic URL) 이것이 곧 우아한 URL이다. (1) foods앱의 url파일 * 주의 : 아래 사진에서 첫 번째 path다음에 콤마 추가해주세요!!!!!!! 여기서 부분을 동적 URL이라고 한다. 이 ..
[Django] 동적 웹페이지 만들기 / 2021.08.30 * 참고 자료 : 코드잇 Django 강의 동적 웹페이지란 템플릿을 수정하지 않아도 자동으로 변하는 웹페이지를 말한다. ex ) 날짜, 방문자 수 등 이 페이지에서 왼쪽 상단에 보이는 날짜를 자동으로 변경되도록 코드를 수정해보자. 1. views.py 로직을 담당하는 views.py에서 오늘 날짜를 가져오는 로직을 만들어보자. 이때, 파이썬에서 날짜와 시간을 다루는 모듈은 datetime을 사용한다. (datetime.today( )) today = datetime.today() # today라는 변수에 오늘 날짜 가져옴 print(today)를 해서 콘솔 창에서 확인해보면 오늘 날짜와 시간이 잘 나오는것을 확인할 수 있다. 하지만, 날짜만 가져오고 싶다면? today = datetime.today()...
[Django] 중복되는 템플릿 코드 없애기, 템플릿 상속 / 2021.08.29 * 참고 자료 : 코드잇 Django 강의 하나의 웹서비스는 무수히 많은 웹페이지로 이루어져있고 그때마다 중복되는 코드를 매번 쓰는 것은 비효율적이다. 이 중복되는 코드를 템플릿 상속을 통해서 해결할 수 있다. 템플릿 상속이란 여러가지 파일의 중복되는 코드를 모아서 부모 파일로 만들어주고 자식 파일에서는 공통되는 코드를 부모 파일에서 상속받고 다른 부분만 작성하는것을 말한다. 장고에서 템플릿 상속은 {% block %} {% extends %} 를 사용해서 구현한다. 1. 부모 파일 만들기 먼저 index.html과 같은 디렉터리에 부모 파일인 base.html을 만들어주자. 2. 뼈대가 되는 부분은 부모파일인 base.html에, 변경이 되는 부분은 자식파일인 index.html으로! 먼저 index...
[Django] 템플릿 언어 (Template Language) / 2021.08.27 * 참고 자료 : 코드잇 Django 강의 템플릿 언어는 장고가 Template을 작성할 때 보다 편리하게 작성할 수 있도록 도와주는 것이다. 쉽게 말해, html을 작성할 때 프로그래밍을 하듯 작성할 수 있도록 해준다. 1. 템플릿 언어 템플릿 언어는 크게 4가지로 구분할 수 있다. (1) 템플릿 변수 : 우리가 지정한 데이터로 변환 {{ 변수명 }} view에서 template으로 원하는 데이터를 전달하고 template은 이 템플릿 변수를 이용해서 전달받은 데이터를 사용한다. 즉, 템플릿 변수는 view에서 템플릿으로 넘겨준 데이터로 해석되어서 변환된다. 그리고 템플릿 변수는 점 연산자를 지원한다. {{ 변수명.속성 }} 이 점 연산자는 변수의 내부 속성에 접근할 때 사용한다. 다음과 같은 순서로 ..
[Django] 정적(static)파일 관리하기 / 2021.08.27 * 참고 자료 : 코드잇 Django 강의 * 코드잇에서 제공하는 파일을 사용하겠습니다. 1. 정적 파일 (static files) 정적 파일이란 html 파일을 제외하고 웹 페이지를 렌더링 하는 과정에서 필요한 추가적인 파일들을 말한다. 예를 들어 css, javascript, img, font 파일 등을 말한다. (1) 정적 파일 디렉터리 만들기 먼저 우리가 작업하고 있는 foods앱 안에 정적파일 관리를 위한 static디렉터리를 생성하고 static 디렉터리안에 앱 이름과 같은 foods 디렉터리를 생성하자. (2) 하위 디렉터리 만들기 static/foods 디렉터리 안에 정적 파일들을 그냥 넣을 수도 있지만 보통은 나누어서 하위 디렉터리를 생성해준다. static/foods 디렉터리 하위에 c..
[Django] Template과 렌더링 / 2021.08.25 * 참고 자료 : 코드잇 Django 강의 앞선 포스팅에서 문자열 Hello, Django! 를 출력하기 위해 코드를 다음과 같이 적어줬었다. 하지만 여기서 단순히 문자열만 있는게 아니라 여러 요소가 포함된 코드를 출력하려면 views파일이 너무 어지럽혀진다. 만약 더 많은 요소를 views파일을 더럽히지 않으면서 리턴 하고 싶다면 어떻게 해야 할까? 1. HTML 파일로 만들기 장고에서는 HTML과 같이 화면 구성을 담당하는 것을 Template라고 한다. 많은 요소들을 더 깔끔하게 관리하기 위해서 새로운 HTML 파일을 생성해보자. (1) templates 디렉터리 생성 우리는 foods앱을 작업 중이니 foods앱 안에 Template파일을 넣어줄 templates디렉터리를 생성하자. 그다음 tem..
[Django] Hello, Django! / 2021.08.24 * 참고 자료 : 코드잇 Django 강의 앞에서 restaurant이라는 프로젝트를 생성했고 foods라는 앱을 생성했다. 이제, 간단한 웹사이트를 만들어보자. 유저가 웹브라우저에 주소 즉 URL을 입력하면 장고는 urls.py에 적혀있는 것을 보고 어떤 처리를 할지 결정한다. 일단 VScode를 실행하고 프로젝트 폴더안의 urls.py에 들어가자. 여기에 있는 urlpatterns가 바로 url을 어떻게 처리할지에 대해 써놓는 곳이다. 우리가 따로 추가하지 않아도 프로젝트를 생성하면 자동으로 path('admin/', admin.site.urls)라고 쓰여있다. 이 코드의 뜻은 우리의 사이트주소 마지막에 admin/을 추가하면 admin.site.urls로 이동하라는 뜻이다. 개발서버를 실행하고 주소..