crud는 Create Read Update Delete의 약자이다
예시) model과 html파일이 이렇다면..?
👉models.py
class Designer(models.Model): #모델명의 첫글자는 대문자로
image = models.ImageField(upload_to= 'images/') #이미지를 다루기 위해 pillow설치
name = models.CharField(max_length = 50) #최대로 넣을 수 있는 글자 수
address = models.CharField(max_length = 255)
description = models.TextField()
👉html
<form action="{% url 'create' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" id="inputFile" name="image">
<input type="text" id="inputName" name="name">
<input type="text" id="inputAddress" name="address">
<textarea id="inputDescription" name="description" cols="40" rows="10"></textarea>
<button type="submit">등록 완료하기</button>
</form>
새로운 객체를 생성해 data를 저장
✍views.py
if request.method == 'POST':
<객체_변수> = <model 이름>()
예시)
if request.method == 'POST':
post = Designer()
👉html form태그로부터 입력값을 받아서 저장하는 과정
✍views.py
<객체_변수>.<필드명> = request.FILES['<form_name속성값>']
<객체_변수>.<필드명> = request.POST['<form_name속성값>']
<객체_변수>.<필드명> = request.POST['<form_name속성값>']
.
.
.
<객체_변수>.save()
예시)
post.image = request.FILES['image']
post.name = request.POST['name']
post.address = request.POST['address']
post.description = request.POST['description']
post.save()
✍views.py(create)
from django.shortcuts import render, redirect
from main.models import Designer
def create(request):
if request.method == 'POST':
post = Designer()
if 'image' in request.FILES:
post.image = request.FILES['image']
post.name = request.POST['name']
post.address = request.POST['address']
post.description = request.POST['description']
post.save()
return redirect('detail', post.id)
정보 수정이 필요한 객체를 찾아 data를 새롭게 저장
✍views.py
from django.shortcuts import get_object_or_404
<객체_변수> = get_object_or_404(<model 이름>, pk = <pk 이름>)
if request.method == 'POST':
예시)
from django.shortcuts import get_object_or_404
post = get_object_or_404(Designer, pk = designer_id)
if request.method == 'POST':
👉html form태그로부터 입력값을 받아서 저장하는 과정
✍views.py
<객체_변수>.<필드명> = request.FILES['<form_name속성값>']
<객체_변수>.<필드명> = request.POST['<form_name속성값>']
<객체_변수>.<필드명> = request.POST['<form_name속성값>']
.
.
.
<객체_변수>.save()
예시)
post.image = request.FILES['image']
post.name = request.POST['name']
post.address = request.POST['address']
post.description = request.POST['description']
post.save()
✍views.py(create)
from django.shortcuts import render, redirect, get_object_or_404
from main.models import Designer
def update(request, designer_id):
post = get_object_or_404(Designer, pk = <pk 이름>)
if request.method == 'POST':
if 'image' in request.FILES:
post.image = request.FILES['image']
post.name = request.POST['name']
post.address = request.POST['address']
post.description = request.POST['description']
post.save()
return redirect('detail', post.id)
else:
return render(request, 'update.html', {'designer' : post})
제거가 필요한 객체를 찾아 삭제
✍views.py
from django.shortcuts import get_object_or_404
<객체_변수> = get_object_or_404(<model 이름>, pk = <pk 이름>)
if request.method == 'POST':
예시)
from django.shortcuts import get_object_or_404
post = get_object_or_404(Designer, pk = designer_id)
if request.method == 'POST':
👉html form태그로부터 입력값을 받아서 저장하는 과정
✍views.py
<객체_변수>.delete()
예시)
post.delete()
✍views.py(create)
from django.shortcuts import render, redirect, get_object_or_404
from main.models import Designer
def delete(request, designer_id):
post = get_object_or_404(Designer, pk=designer_id)
post.delete()
return redirect('home')