본문 바로가기
웹 개발 실습/Django

[Django]_ToDoList 만들기 (5) 데이터베이스에 저장하기

by ssolLEE 2023. 7. 30.
반응형

 

사용자가 입력한 메모를 데이터베이스에 저장하기

 

  • 데이터베이스의 저장 로직은 views.py에서 시작합니다.  다음의 코드를 입력합니다.

.models.py에 있는 모든 걸 다 가져온다는 의미

  • 그리고 print와 return 사이에 다음과 같이 코드를 입력합니다. 
    new_todo = Todo(content = user_input_str)
    new_todo.save()

  • 저장을 한 후 python manage.py runserver를 통해 웹 페이지로 이동합니다. 
  • 메모를 입력한 후 메모하기!를 클릭합니다.

  • terminal에 다음의 명령어를 입력합니다.
python manage.py dbshell
  • 그리고 SELECT * FROM my_to_do_app_todo;을 입력합니다.

  • 정상적으로 저장이 잘 되고 있습니다.

 

저장된 메모를 웹 페이지에 보이게 하기

 

  • 실질적인 구현을 하는 건 view.py, 하지만 꼭 징검다리 urls.py를 건너가야 한다고 했습니다. 
  • ToDoList > my_to_do_app > urls.py로 이동합니다. 다음과 같이 코드를 수정합니다.

각 path로 매핑시켜줄 때 name으로 접근할 수 있도록 한다.

  • ToDoList > my_to_do_app > views.py로 이동합니다. 다음과 같이 코드를 수정합니다.

우리가 사용할 함수들을 추가하였다.
'메모하기!' 버튼을 누르면 create ToDo로 가는 게 아니고 메인 페이지로 가게 하는 코드

  • ToDoList > my_to_do_app > templates > my_to_do_app > index.html로 이동합니다. 다음과 같이 코드를 수정합니다.

  • terminal에 python manage.py runserver를 입력하여 웹 페이지를 확인합니다. 그리고 메모도 입력해보세요.

아까 DB에 저장된 메모도 보이지요?

 

목록 삭제하기

이번에는 빨간색의 '완료'버튼을 눌렀을 때 해당 Todo를 사라지게 하겠습니다. 각각의 Todo를 구별하는 건 데이터베이스에서 테이블을 만들때 자동으로 부여되는 id(PK라고도 함)를 이용하면 됩니다.

 

  • 우선 index.html에서 사용자가 '완료'버튼을 눌렀을 때 /deleteTodo라는 url로 이동하도록 설정합니다.

  • urls.py에서 경로를 잡고 views.py로 가겠습니다. 
  • urls.py로 가서 다음과 같이 코드를 추가합니다.

  • 이젠 views.py로 가서 deleteTodo에 대해 정의하겠습니다. 다음의 코드를 추가합니다.
def deleteTodo(request):
    delete_todo_id = request.GET['todoNum']
    print('삭제한 todo의 id', delete_todo_id)
    todo = Todo.objects.get(id = delete_todo_id)
    todo.delete()
    return HttpResponseRedirect(reverse('index'))
  • 저장을 한 후 웹 페이지를 열고 실행해봅니다.

  • 삭제도 잘 됩니다.

 

모두 긴 여정 정말 수고 많으셨습니다.

 

오늘도 감사합니다.