ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django-4 MVC
    Python 끄적끄적/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 수정################

    ################'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

    댓글

Designed by Tistory.