본문 바로가기
개발/Django_python 웹 프레임워크

Blog project_CRUD 2-수정, 삭제 만들기

by 자유로운 코끼리 2020. 7. 12.
728x90

1. 수정하기 - 기존 내용을 담은 페이지 불러오기 renew.html

수정하기 버튼을 누르면,

기존내용을 가져와 띄워주고, 여기서 값을 변환시켜 다시 db에 저장해주어야 하니다.

우선 수정이 요청되었을 때 기존 내용을 띄우는 작업부터 해보겠습니다.

 

1) views.py

renew가 요청되었을 때, 특정 id의 객체를 가져와 띄워주는 작업을 해주는 코드입니다.

def renew(request,blog_id):
    blog_r= get_object_or_404(Blog, pk= blog_id) #특정 객체 가져오기(없으면 404 에러)
    return render(request, 'renew.html', {'blog':blog_r})    

2) renew.html

input은 value에 값을 넣고,textarea는 태그 바깥쪽에 값을 넣는 형태를 가지고 있습니다.

<form action="{% url '' %}">
	<h4>제목: </h4>
	<input type="text" name="title" value="{{blog.title}}">
	<br>
	<h4>본문: </h4>
	<textarea cols=40 rows=10 name="body">{{blog.body}}</textarea>
	<br>
	<input type="submit" value="제출하기">
</form>

3) urls.py

path('renew/<int:blog_id>', blogapp.views.renew, name="renew"),

 

2. 수정하기 - 수정 내용 db 저장 update.html

이제 수정한 내용을 다시, db에 저장하는 작업을 해주어야 합니다.

 

1) views.py

def update(request,blog_id):
    blog_u = get_object_or_404(Blog, pk= blog_id) # 특정 객체 가져오기(없으면 404 에러)
    blog_u.title = request.GET['title'] # 내용 채우기
    blog_u.body = request.GET['body'] # 내용 채우기
    blog_u.pub_date = timezone.datetime.now() # 내용 채우기
    blog_u.save()
    return redirect('/detail/' + str(blog_u.id))  

2) urls.py

path('update/<int:blog_id>', blogapp.views.update, name="update"),

3) renew.html - form 태그

<form action="{% url 'update' blog.id %}">
	<h4>제목: </h4>
	<input type="text" name="title" value="{{blog.title}}">
	<br>
	<h4>본문: </h4>
	<textarea cols=40 rows=10 name="body">{{blog.body}}</textarea>
	<br>
	<input type="submit" value="제출하기">
</form>

3. 삭제하기 - 수정 내용 db 저장 delete.html

삭제 기능은 특정 객체를 불러와 delete함수를 이용하기만 하면 됩니다.

1) views.py

def delete(request, blog_id):
    blog_d= get_object_or_404(Blog, pk= blog_id) # 특정 객체 가져오기(없으면 404 에러)
    blog_d.delete()
    return redirect('main') 

삭제 후에 다시 첫 화면으로 가게 하기 위해 main을 넣어줬습니다.

 

2) urls.py

path('delete/<int:blog_id>', blogapp.views.delete, name="delete"),

댓글