본 글은 django를 활용하여 ToDoList 프로젝트를 설명하기 위해 작성되었습니다.
my_to_do_app 폴더 내에 있는 views.py 파일을 아래와 같이 수정합니다.
from django.shortcuts import render
from django.http import HttpResponse
from .models import *
# Create your views here.
'''
def index(request):
return HttpResponse("My_to_do_app first page")
'''
def index(request):
return render(request, "my_to_do_app/index.html")
def createTodo(request):
user_input_str = request.POST['todoContent']
new_todo = Todo(content = user_input_str)
new_todo.save()
return HttpResponse("create Todo를 할 거야! => " + user_input_str)
dbshell에 접근하여 정상적으로 데이터가 저장되는지 확인합니다.
본인은 이미 한 번 작성을 했기 때문에 위와 같이 표시가 되는 점 확인 바랍니다.
다음으로, 메인 페이지로 돌아가기 위해 url로 돌아가기 위해 urls.py를 수정합니다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="index"),
path('createTodo/', views.createTodo, name="createTodo")
]
다음으로, my_to_do_app/views.py 파일을 아래와 같이 수정합니다.
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from .models import *
# Create your views here.
def index(request):
# DB에서 데이터를 받아서 index.html 뿌려주기
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)
# 데이터 DB에 저장
new_todo.save()
# return HttpResponse("create ToDo를 하자" + user_input_str)
return HttpResponseRedirect(reverse('index'))
데이터를 처리할 수 있도록 index.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="./deleteTodo" method="GET">
./deleteToDo를 작성하였기 때문에, ToDoList/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"),
]
다음으로, views.py 파일로 이동하여 delete 기능 추가를 위해 deleteTodo 함수를 생성합니다.
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from .models import *
# my_to_do_app/views.py
# Create your views here.
# def index(request):
# return HttpResponse("my_to_do_app first page")
def index(request):
# DB에서 데이터를 받아서 index.html 뿌려주기
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)
# 데이터 DB에 저장
new_todo.save()
# return HttpResponse("create ToDo를 하자" + user_input_str)
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'))
runserver를 다시 실행하여 확인하면, 정상적으로 추가 및 삭제 기능이 작동하는 것을 확인할 수 있습니다.
'데이터 분석&엔지니어링 캠프' 카테고리의 다른 글
머신러닝 - 랜덤 서치(Random Search) (0) | 2024.02.19 |
---|---|
머신 러닝 - 그리드 서치(Grid Search) (0) | 2024.02.19 |
Django - ToDoList 프로젝트 (2) (0) | 2024.01.28 |
Django - ToDoList 프로젝트 (1) (0) | 2024.01.27 |
Django - Gmail 발송 (0) | 2024.01.26 |