세로형
Recent Posts
Recent Comments
Link
04-20 00:01
«   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 web 개발하기 - 2편. mysql 연동, 페이지 생성(view, template, static) 본문

python-django

Django로 todo list web 개발하기 - 2편. mysql 연동, 페이지 생성(view, template, static)

이수진의 블로그 2019. 5. 20. 20:07

완성된 코드는 아래 github 주소에 있습니다!

도움이 되셨다면 좋아요와 깃허브 스타를 눌러주세요! 저에게 있어 큰 힘이 됩니다 ㅠㅠhttps://github.com/lsjsj92/django_todo_app

 

지난번 포스팅에서 django를 설치하고 앱을 생성하고, 데이터베이스 migrate도 해보았습니다.

그리고 admin user를 만들었죠

이번 포스팅은 이제 실제 웹 페이지를 띄우도록 합니다

view와 template부분, static 부분을 연동하는 과정을 진행합니다.

todo list 게시판을 만들기 위한 전초 작업입니다.

사실.. django로 게시판 만들기와 같다고 생각하시면 됩니다.

 

 

저는 먼저 static 폴더를 하나 만들었습니다. todo_main에 디렉토리를 하나 만들어서 그 밑에 css, js를 만들고

그 아래에 필요한 라이브러리 파일을 넣었습니다.

sortable.js는 마우스 드래그를 통해 게시판 목록을 섞을 수 있는 js이고, css에 들어간 것은 부트스트랩(bootstrap)을 활용하기 위한 css 파일입니다.

css는 저 파일들이 다 필요하지 않습니다. 부트스트랩만 적용이 되면 됩니다!

위 파일들은 구글링을 통해 받을 수 있습니다. 그리고 굳이 iso.css, animate.css 이게 다 필요는 없습니다.

단지, 부트스트랩만 되면 됩니다

 

 

그리고 todoSubject의 프로젝트 폴더에 들어가서 settings.py를 확인합니다.

 

 

여기에서 저희가 추가했던 app을 추가해줍니다. INSTALLED_APPS에다가 추가해주시면 됩니다

 

 

그리고 밑에 LANGUAGE_CODE와 TIME_ZONE, STATIC_URL, MEDIA_URL 등을 설정해줍니다.

언어는 당연히 한국이 되어야 하구요. static파일과 media 파일이 어디로 들어갈지 경로를 설정해주는 것입니다.

 

 

 

그리고 아까 todo_main -> static 디렉토리에 넣었던 자료들이 적용되게 하기 위하여

python manage.py collectstatic을 진행합니다

 

 

그러면 위와 같이 todo_main이 아닌 프로젝트 제일 상위 디렉토리 아래에 static이 만들어진 것을 볼 수 있습니다.

 

 

다음은 다시 settings.py에 가서 mysql과 연동하기 위한 설정을 진행합니다.

pymysql이 설치되어 있으셔야 합니다.

pip install pymysql로 간단히 설치가 가능합니다

 

 

그리고 데이터베이스 설정값을 넣어줍니다.

 

저 데이터베이스 NAME 그대로 사용하실 필요가 없습니다.

여러분들이 사용하시는 설정으로 바꾸시면 되세요!

저도 사진으로는 programmers_subjects라고 나와있지만, 실제로는 todo_app 으로 명명했습니다.

 

mysql을 사용하기에 mysql과 관련된 설정을 하고 db이름, db계정, 비밀번호, db호스트 등의 정보를 넣어줍니다.

아직 사용하지는 않습니다. 하지만, DB 정보는 있어야 하기 때문에 DB는 만들어두세요!

 

자 이제 django와 mysql 연동이 되었습니다.

이제 본격적으로 project와 app을 연동해보죠

 

todoSubject의 프로젝트 폴더로 들어가면 urls.py가 있습니다

 

 

이 부분을 위와 같이 수정합니다.

만약 localhost:8000/ 으로 들어오면 todo_main.urls에 연동시키겠다

만약 localhost:8000/index으로 들어오면 todo_main.urls에 연동시키겠다 이런 뜻입니다

그러면 todo_main.urls에서 받을 준비를 해야겠죠?

 

 

여기도 마찬가지로 urls.py를 만들어줍니다. 여기는 처음에는 없을겁니다. 만들어주시면 됩니다

 

 

그리고 위와 같이 만들어줍니다.

만약 todo_main으로 localhost:8000 패턴으로 오게 된다면(r'^$') Todo_main.as_view 행동을 취해라! 이런 뜻입니다.

그러면 Todo_main은 어딨을까요?

이 부분은 view에서 설정해줍니다

 

 

view.py에 가셔서 generic view를 통해 페이지를 만들어줍니다.

django에서는 function based view와 generic view 크게 2가지 형태의 view 개발이 있습니다.

function based view는 사용자가 세세하게 코딩할 부분이 있으면 사용합니다.

generic view는 간편하게 사용할 수 있고 코드가 매우 간결하고 단순합니다.

저는 이 generic view와 function based view를 섞으면서 진행할 것입니다. 필요에 따라서 나뉠 것입니다!

아무튼 저렇게 하면 Todo_main에는 TemplateView(일반적인 view)를 보여주는데 get 방식으로 받았을 때는

todo_main/index.html 로 이동하라! 라는 것입니다

 

 

그러면 todo_main에 index.html을 만들어줘야겠죠

templates라는 디렉토리를 만들고 그 밑에 todo_main 폴더를 하나 더 만들고 그 아래에 index.html을 만들어줍니다

 

 

그리고 위와 같이 내용을 아무렇게나 사용하고

python manage.py runserver를 가동!

 

 

이렇게 나오게 됩니다

이번 포스팅은 여기까지입니다!

반응형
그리드형
Comments