Django

To do list 만들기 4

jsys 2024. 1. 26. 16:19

1. HTML 수정

 

완료 버튼을 누르면 데이터를 삭제하는 기능을 구현하기 위해 HTML코드를 살펴본다.

          <div class="toDoDiv">
                <ul class="list-group">
                    {% for todo in todos %}
                    <form action="" method="GET">
                        <div class="input-group" name='todo1'>
                            <li class="list-group-item">{{ todo.content }}</li>
                            <input type="hidden" id="todoNum" name="todoNum" value="{{ todo.id }}"></input>
                            <span class="input-group-addon">
                                <button type="submit" class="custom-btn btn btn-danger">완료</button>
                            </span>
                        </div>
                    </form>
                    {% endfor %}
                </ul>
            </div>

>> index.html 에서 form 태그의 action값을 설정해야 한다.

 

 

 

<form action="./deleteTodo" method="GET">

>> 위와 같이 코드를 수정한다.

>> 완료 버튼을 클릭하면 .deleteTodo의 url로 이동하게 한 것이다.

 

 

 

 

 

 

2. urls.py 설정

 

위에서 form 태그의 action 값에 ./deleteTodo/를 입력했으니 urls.py에서 이를 등록해야 한다.

my_to_do_app의 urls.py 파일을 연다.

from django.urls import path 
from . import views 

urlpatterns = [
    path('', views.index, name="index"), 
    path('createTodo/', views.createTodo, name="createTodo"), 
    path('deleteTodo/', views.deleteTodo, name="deleteTodo"), 
]

>> 코드를 위와 같이 수정한다.

 

 

 

 

 

 

3. view.py 설정

 

views.py에서 deleteTodo 함수를 만들어야 한다.

my_to_do_app의 views.py 파일을 연다.

def index(request):
    todos = Todo.objects.all()
    content = {'todos' : todos}
    return render(request, "my_to_do_app/index.html", content)

def createTodo(request):
    user_input_str = request.POST['todoContent']
    new_todo = Todo(content = user_input_str)
    new_todo.save()
    return HttpResponseRedirect(reverse('index'))

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

>> 코드를 위와 같이 작성하여 delete 기능을 추가한다.

 

 

 

 

 

 

4. 확인

 

>> 완료 버튼을 눌렀을 때 내용이 사라지는 것을 확인한다.

 

 

 

 

 

 

 

 

* 참조 블로그 링크(강사님 블로그)

Django Project ToDoList - 5 - Data Science | DSChloe

 

Django Project ToDoList - 5

개요 Django 한 그릇 뚝딱 교재의 내용에서 멀티캠퍼스 강의에 맞게 일부 수정함 2019년 버전이고 현재는 2023년이기 때문에 소스코드 변경 사항이 필요할 거 같아서 글을 남김 교재 홍보 교재 구매

dschloe.github.io

 

'Django' 카테고리의 다른 글

To do list 만들기 3  (0) 2024.01.26
To do list 만들기 2  (0) 2024.01.26
To do list 만들기 1  (0) 2024.01.25
Django 설치 & 프로젝트 생성  (0) 2024.01.24
웹개발 실습 2(HTML 구조)  (0) 2024.01.22