-
Django-4 MVCPython 끄적끄적/Python django 2020. 3. 29. 20:30더보기
Model(models.py) <---> Controller(views.py) <----->view(templates)
^-----User---^ 장고의 MVC패턴
모델을 만들어보자.
ToDoList/my_to_do_app/models.py
장고에서 하나의 모델은 하나의 클레스로 나타낸다. ToDo라는 클래스 이름이 결국 모델이름이다.
위 정의는
ToDo는 데이터형태가 CharField형태이며 최대길이가 255인 content 값 하나만 가진다고 설정한 것이다.
장고에 migrations(데이터베이스에 전달해줄 초안,설계도)을 만들었다고 알려줘야 되는데 이는
python manage.py makemigrations
라 하면된다.
이를 입력하면 my_do_do_app에 migrations라는 폴더가 생성된 것을 볼 수 있고 내부에 0001initial.py라는 파일을 볼 수 있다.
데이터베이스에 실제 테이블을 만드려면 한번 더 명령어를 입력해야 된다.
python manage.py migrate
잘 만들어 졌는지 확인해 보자
python manage.py dbshel
.tables
생성되는 테이블은 <프로잭트이름>_<모델이름>으로 명명된다.
이제 테이블의정보를 확인 해 보자.
PRAGMA table_info(my_to_do_app_todo);
순서|이름|형태|notnull여부|primary key여부
select * from my_to_do_app_todo;
비어 있으므로 select문으로 불러도 데이터가 나오지 않는다.
---------------------------------------------------------------------------------------------------------------------
아까 만들었던 index.html로 돌아가서 편집해보자.
우선
빨간색 부분을 편집할 것이다.
그 후 실행시키면
127.0.0.1:8000/createToDo/ 로 이동할 것이다.
하지만 아직 createToDo를 구현하지 않아서 404에러가 뜰 것이다.
장고는 처음 url을 받으면
ToDoList/urls.py로 이동한다. 여기서 my_to_do_app.urls로 이동하라고 설정했으므로
ToDoList/my_to_do_app/urls.py로 이동한다.
여기에 createTodo에 관한 url설정을 넣어주면된다.
이후 views에 createTodo함수를 만들어 주면
다음과 같이 출력되는 것을 볼 수 있다.
이제 DB에 넣어보자
from .models import * : (.)은 같은 위치라는 의미이고 *은 모든것 이라는 의미이다.
cerateTodo에서 .save()가 DB에 저장하는 함수이다.
다시 서버를 키고 메모를 입력하면
DB에 저장된 것을 볼 수 있다.
---------------------------------------------------------------------------------------------------------------------
하지만
저장 작업이 끝난 뒤 주소가 createTodo이다.
우리는 127.0.0.1:8000/ 가 주소로 되고 index.html로 돌아가길 원한다.
이럴때 우리는 2가지를 수정해 주어야 한다.
첫번째로
createTodo로 보낼때 주소값이 아닌 이름값으로 주기 위해 이름을 만들어 준다.
두번째로
################'index'=>index 수정################
views.py를 수정해주면된다.
reverse는 index라는 url을 찾는 함수이고,
HttpResponseRedirect는 해당 url로 이동하는 함수이다.
빨간곳에 DB의 내용을 출력해보자.
index를 불러올 때 db를 항상 읽어야 되므로
views.py에서 값들을 받아서 보내야 한다.
Todo함수에 있는 objects 에서 all함수를 통해 보든 데이터를 가져온다.
이를 딕셔너리로 만들어서 todos라는 키에 할당시킨 후 render함수의 마지막에 content에 넣어서 전달한다.
{% %}은 탬플릿 테그로써 html파일내부에 파이썬 문법을 사용할 수 있다.
{{ }}또한 탬플릿 테그이지만 이는 사용자에게 직접 보여 주는 값을 의미한다.
마지막으로 삭제 기능을 넣어보자
############object=>objects수정##########
'Python 끄적끄적 > Python django' 카테고리의 다른 글
Django RestaurantShare-2(CRUD구성) (0) 2020.04.05 Django Restaurant Share-1 (0) 2020.04.03 Django-3 templates (0) 2020.03.29 Django-2 Create To_do_list (0) 2020.03.29 Django-1 Create To_do_list (0) 2020.03.29