이전 기사에서는 Django 프로젝트 설정의 기본 사항을 다루고 운동 모델을 만들어 프런트 엔드에 목록으로 표시했습니다. 이 문서에서는 CRUD 작업 수행에 대해 살펴보겠습니다. 익숙하지 않은 분들을 위해 설명하자면 CRUD는 생성(Create), 읽기(Read), 업데이트(Update), 삭제(Delete)를 의미합니다. 기본적으로 데이터에 대해 수행할 수 있는 네 가지 기본 작업입니다.
이제 앱 폴더에 API가 설정되었으므로 색인 보기를 확장하여 생성, 업데이트, 삭제 요청을 처리하겠습니다.
사용자가 운동을 만들 수 있는 양식을 설정해 보겠습니다. 우리는 이 목적을 위해 HTML 템플릿을 다시 한 번 사용할 것입니다. 시작하려면 app/templates 폴더에 add_exercise.html이라는 새 템플릿을 만드세요.
다음으로 index.html 템플릿에 다음 방법을 사용하여 add_exercise.html 템플릿을 포함하겠습니다.
{% extends "base.html" %} {% block content %}Exercises
{% include 'add_exercise.html' %} ... {% endblock %}
여기에서는 HTML 템플릿 전체의 구성성을 촉진하여 코드를 더 쉽게 유지 관리하고 이해할 수 있도록 하는 include 태그를 활용하고 있습니다. 브라우저에서 페이지를 새로 고치면 화면에 양식이 나타나는 것을 볼 수 있습니다.
HTML에서는 메소드 속성이 POST로 설정되고 작업 속성이 /를 가리키는
목록의 각 운동에 대해
그리고 연습 보기에서는 요청을 구별하기 위해 다음과 같이 변경하겠습니다.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
버튼 이름을 확인하고 그에 따라 적절한 연습 방법으로 요청을 전달합니다.
app/models.py의 운동 모델에 업데이트 클래스 메소드를 추가해 보겠습니다.
def update(request): id = request.POST.get('id') title = request.POST.get('title') date = request.POST.get('date') exercise = Exercise.objects.filter(pk=id).update(title=title, date=date) return exercise
데이터베이스의 행을 업데이트하려면 운동 모델에서 사용할 수 있는 업데이트 방법을 사용할 수 있습니다. 하지만 업데이트하기 전에 올바른 운동을 업데이트하고 있는지 확인해야 합니다. 이를 위해 기본 키인 ID를 기준으로 운동을 필터링하고 해당 특정 운동만 업데이트합니다.
마찬가지로 exercise.html 템플릿의 각 운동 옆에 삭제 버튼을 추가하겠습니다.
삭제를 name 속성의 값으로 설정하고 views.py에서 삭제 작업을 처리하기 위해 if...elif 문을 확장합니다.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST delete = 'delete' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) elif delete == True: models.Exercise.delete(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
그리고 연습 모델에 delete 클래스 메소드를 추가하겠습니다.
def delete(request): id = request.POST.get('id') is_deleted = Exercise.objects.filter(pk=id).delete() if is_deleted == 1: return True return False
이 추가를 통해 Python 및 Django 애플리케이션에서 CRUD 작업을 성공적으로 구현했습니다.
from django.http import HttpResponseRedirect def index(request): ... return redirect('/') # or return HttpResponseRedirect(request.META['HTTP_REFERER'])
요약하자면, POST 요청을 효과적으로 관리하고 적절한 리디렉션을 보장함으로써 Django 애플리케이션에서 CRUD 작업을 구현하는 동안 원활한 사용자 환경을 만들 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3