세로형
Recent Posts
Recent Comments
Link
04-18 16:57
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

파이썬 장고(django)로 todo list 게시판 만들기 - 4편. mysql 연동과 값 가져오기 본문

python-django

파이썬 장고(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를 통해 값을 넣어줍니다

별것없죠 ㅎㅎ..

 

이렇게 나옵니다!

이제 다음 포스팅에서 계속 진행됩니다~

반응형
그리드형
Comments