Django-crud

mseo39·2021년 1월 22일
1

django

목록 보기
4/7
post-thumbnail

📚likelion 8th의 django 강의 필기

📑Django

CRUD 이란?

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>

Create

새로운 객체를 생성해 data를 저장

1. 객체 생성

✍views.py
if request.method == 'POST':
        <객체_변수> = <model 이름>()
        
예시)
if request.method == 'POST':
        post = Designer()

2. 입력 data 저장

👉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()

create 예시

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

Update

정보 수정이 필요한 객체를 찾아 data를 새롭게 저장

1. 객체 탐색

✍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':

2. 입력 data 저장

👉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()

update 예시

✍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})

Delete

제거가 필요한 객체를 찾아 삭제

1. 객체 탐색

✍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':

2. 객체 삭제

👉html form태그로부터 입력값을 받아서 저장하는 과정
✍views.py
<객체_변수>.delete()
        
예시)
post.delete()

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')
profile
하루하루 성실하게

0개의 댓글