Python Django Project(3)

dada·2020년 7월 23일
0

django

목록 보기
3/3
post-thumbnail

CRUD 기능 추가하기 (2)

UPDATE & DELETE

0. html 틀 수정하기

  • detail.html 생성
    글의 내용만 따로 볼 수 있도록 해줌
    이 html 안에서 수정, 삭제 기능을 구현할 예정

  • views.py 수정

from django.shortcuts import get_object_or_404

def detail(req, blog_id):
    blog = get_object_or_404(Blog, pk = blog_id)
    return render(req, 'detail.html', {'blog' : blog})

get_object_or_404(): id에 해당하는 pk값을 불러오고 만약 없다면 404를 띄우도록 하는 함수
pk = primary key: blog가 가지고 있는 고유번호

  • detail.html 수정
<a href="{% url 'blog' %}">목록으로</a>
<a href="{% url 'edit' blog.id %}">수정하기</a>
<a href="{% url 'delete' blog.id %}">삭제하기</a>

1. Update 기능 만들기

  • edit.html 생성
<h1>Edit</h1>

<form action="{% url 'update' blog.id %}" method="POST">
    <div>
        <label for="title">제목</label><br>
        <input type="text" id="title" name='title' value="{{blog.title}}"> 
    </div>
    <div>
        <label for="content">내용</label><br>
    <textarea name="body" id="body" cols="30" rows="10">{{blog.body}}</textarea>
    </div>
    <input type="submit" value="수정하기">
</form>

<a href="{% url 'blog' %}">목록으로</a>
  • urls.py 수정
urlpatterns = [
	path('blog/<int:blog_id>/edit', myapp.views.edit, name='edit'),
    	path('blog/<int:blog_id>/update', myapp.views.update, name='update'),
]
  • views.py 함수 생성
def edit(req, blog_id):
    blog = get_object_or_404(Blog, pk = blog_id)
    return render(req, 'edit.html', {'blog': blog})
    
def update(req, blog_id):
    if(req.method == 'POST'):
        blog = get_object_or_404(Blog, pk = blog_id)
        blog.title = req.POST['title']
        blog.body = req.POST['body']
        blog.save()
    return redirect('/blog/'+str(blog.id))

2. Delete 기능 만들기

  • views.py 함수 생성
def delete(req, blog_id):
    blog = get_object_or_404(Blog, pk = blog_id)
    blog.delete()
    return redirect('/blog/')
  • urls.py 수정
urlpatterns = [
	path('blog/<int:blog_id>/delete', myapp.views.delete, name='delete'),
]
profile
AI, Python 등 공부용 블로그

0개의 댓글