꿈 많은 사람의 이야기
파이썬 장고(django)로 todo list 게시판 만들기 - 4편. mysql 연동과 값 가져오기 본문
파이썬 장고(django)로 todo list 게시판 만들기 - 4편. mysql 연동과 값 가져오기
이수진의 블로그 이수진의 블로그 2019. 5. 21. 12:07완성된 코드는 아래 github 주소에 있습니다!도움이 되셨다면 좋아요와 깃허브 스타를 눌러주세요!
저에게 있어 큰 힘이 됩니다 ㅠㅠ
https://github.com/lsjsj92/django_todo_app
지난 포스팅에서 간단하게 django와 mysql을 연동했습니다.
하지만 값을 가져오거나 그런 행동을 취하진 않았죠
그냥 settings.py에다가 pymysql을 가져와서 설정만 해주었습니다.
이제 실제 db를 가져오고 연동하는 방법을 알아보겠습니다
MTV 패턴에서 M(Model)부분에 해당됩니다
CREATE DATABASE todo_app;
use todo_app;
CREATE TABLE TODO_LIST(
NO INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
PCODE CHAR(4) NOT NULL,
USER_ID VARCHAR(50),
TITLE VARCHAR(200),
CONTENT VARCHAR(1000),
IS_COMPLETE BOOLEAN,
PRIORITY INT,
END_DATE DATE
);
CREATE TABLE PROJECT_CODE(
PCODE CHAR(4) NOT NULL PRIMARY KEY,
PNAME VARCHAR(100) NOT NULL
);
insert into PROJECT_CODE(PCODE, PNAME) values('1', '수진일정');
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE) values('1', 'guest', '공부하기', '자바와 파이썬 공부', false);
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE, END_DATE) values('1', 'guest', '운동하기', '뱃살좀 빼자..', false, '2019-05-20');
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE, END_DATE) values('1', 'guest', '개발하기', 'todo list!!!', false, '2019-05-18');
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE) values('1', 'guest', '힘내기!', '할 수 있어 임마', true);
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE, END_DATE) values('1', 'guest', '마감기한', 'todo list!!!', true, '2019-05-18');
insert into TODO_LIST(PCODE, USER_ID, TITLE, CONTENT, IS_COMPLETE, END_DATE) values('1', 'guest', '마감기한 테스트', 'todo list!!!', true, '2019-05-17');
alter table todo_list add PRIORITY INT AFTER IS_COMPLETE
데이터베이스 설계는 위를 따라하시면 되겠습니다!
저는 위와 같이 데이터베이스에 값을 넣은 상태입니다
보통은 이렇게 models 파일에 값을 설정합니다. class가 하나의 테이블이라고 생각하시면 됩니다
그리고 그 밑에 modesl.AutoField는 auto_increment이구요 CharField는 캐릭터 필드, TextField는 Text필드 등을 뜻합니다. DateField는 데이트 값이겠죠 ㅎㅎ
이렇게 하고 나서 DB에 적용시키면 됩니다
적용 시키는 과정은 아래와 같습니다
데이터베이스를 적용시키기 위해서 model이 적용되도록 합니다.
여기서 makemigrations와 migrate 명령어가 있습니다.
makemigrations는 models.py에 적용된 내용을 파일로 생성하는 것입니다. 일종의 초안? 작업이라고 보시면 되죠
그리고 그 적용 사항을 migrate 명령어를 통해 실제 db에 적용시켜줍니다
근데 저는 이미 db를 만들어놨습니다.
굳이 저 작업을 할 필요가 없죠
그러면 이미 만들어진 db를 어떻게 models.py에 옮겨놓느냐?? 그게 문제죠
장고는 이런 것들을 지원해줍니다.
python manage.py inspectdb 명령어를 통해
db를 감지합니다.
이렇게요!
그럼 db 내용들이 쭉 나오는데요
제꺼는 여기 나오네요!
엄청 간단하죠. 이 내용을 가지고 models 파일에 넣어주면 됩니다
그냥 복붙 하시면 됩니다!
짠! 이렇게 복붙했습니다
매우 간단하죠?
그리고 적용을 다시 시켜줍니다. 아직 파일로 읽히고 연동이 되진 않은 상태입니다
models.py가 변화가 있었으니까요!
자 이제 db 값을 실제로 가져와야겠죠??
views.py에 가서 위와 같이 진행을 합니다.
from .model import TodoList를 가져와서
todo_list = TodoList.objects.all()을 통해 모든 객체를 가져옵니다
그리고 그 결과 값을 {"todo_list": todo_list} 에 담아서 이제 template으로 넘겨줍니다~
템플릿에서는 view를 통해 넘어온 데이터를 받아야겠죠?
todo_list라는 값을 받았습니다. 그러면 django template language를 사용하면 됩니다.
{% for list in todo_list %}
{{ list.title }}
{% endfor %}
를 통해 값을 가져오죠!
이렇게 가져와서 출력이 되는 것을 확인할 수 있습니다!!
근데 그냥 저렇게 출력되는 것은 너무 무미건조하죠?
그래서 조금?? 꾸며봅시다
바로 input type checkbox를 통해 값을 넣어줍니다
별것없죠 ㅎㅎ..
이렇게 나옵니다!
이제 다음 포스팅에서 계속 진행됩니다~
'python-django' 카테고리의 다른 글
python django로 todo 게시판 만들기 - 6편. detail view (2) | 2019.05.29 |
---|---|
python django로 todo 게시판 만들자! - 5편. django form을 이용한 게시판 글쓰기 (8) | 2019.05.22 |
파이썬 장고(django)로 todo list 게시판 만들기 - 4편. mysql 연동과 값 가져오기 (15) | 2019.05.21 |
python django로 todo list 게시판 구현하기! - 3편. template extends (12) | 2019.05.21 |
Django로 todo list web 개발하기 - 2편. mysql 연동, 페이지 생성(view, template, static) (39) | 2019.05.20 |
파이썬 django로 todo list web 개발하기 - 1편. 프로젝트, 앱 생성 및 유저 생성 (2) | 2019.05.20 |
-
susu1012 2019.09.05 18:15 직접 model을 만들어 주실때는 END_DATE가 date이고 PRIORITY 가없네요..
-
이수진의 블로그 이수진의 블로그 2019.09.05 22:34 신고 안녕하세요
직접 model을 만들 때는 model.py에 하나하나 입력할 때를 말씀하시는 건가요?
저건 예시로 입력해놔서 그렇습니다 ㅠㅠ
실제로 저렇게 진행은 하지 않았어요! -
한상윤 2019.11.26 09:00 todo_board > view.py 에서 template_name='todo_board/todo_list.html' 로 설정해 놓으셨는데요. ㅎㅎ 저는 todo_board 가 없어야 제대로 파일을 찾더라구요. 혹시 다시한번 확인 부탁드려도 될까요?
-
이수진의 블로그 이수진의 블로그 2019.11.26 19:45 신고 아 그런가요?
올리는 중에 뭔가 꼬였나보네요.
제가 조만간 확인해보겠습니다. -
w0w6w4@gmail.com 2019.12.26 19:00 너무 재밌어요. 설명 너무 잘해주시는거 같네요 ㅎㅎ
-
이수진의 블로그 이수진의 블로그 2019.12.26 21:23 신고 감사합니다. ㅠ 도움이 되셔야 할탠데요.
가면 갈 수록 부족한 점이 많을거에요.. 당시에 급하게 블로그에 올렸던터라 ㅜㅜ -
w0w6w4@gmail.com 2019.12.27 11:39 제가 sql을 잘 몰라서 그런데요
alter table TODO_LIST PRIORITY INT AFTER IS_COMPLETE에서 자꾸 오류가 생기네요. 이 코드 의미가뭔가요? -
이수진의 블로그 이수진의 블로그 2019.12.27 12:58 신고 아 ~ is_complete라는 컬럼을 추가하기 위한 값입니다.
근데 이미 이 컬럼은 위의 create table할 때 추가가 된 것이라서요. 안하셔도 괜찮습니다~ -
w0w6w4@gmail.com 2019.12.27 17:46 아하 !감사합니다
-
kkddhh2826@gmail.com 2020.02.02 17:13 너무나 감사합니다 ㅠㅠ 장정 20시간동안 혼자서 장고를 만지다 드디어 됬네요...!
-
이수진의 블로그 이수진의 블로그 2020.02.02 20:53 신고 안녕하세요
고생하셨습니다 ㅠㅠ
그래도 되셨다니 다행입니다. -
2020.05.09 14:57 비밀댓글입니다
-
2020.11.28 20:50 비밀댓글입니다