Delete 구현
1. views.py에서 delete함수 생성하기
from django.shortcuts import render,redirect, get_object_or_404
from django.utils import timezone #추가
from .models import Blog
def home(request):
blogs = Blog.objects.all()
return render(request, 'home.html', {'blogs' : blogs})
def detail(request, id):
blog = get_object_or_404(Blog,pk=id)
return render(request, 'detail.html', {'blog' : blog})
def new(request):
return render(request, 'new.html')
def create(request):
new_blog = Blog()
new_blog.title = request.POST['title']
new_blog.writer = request.POST['writer']
new_blog.body = request.POST['body']
new_blog.pub_date = timezone.now()
new_blog.save()
return redirect('detail', new_blog.id)
def edit(request, id):
edit_blog = Blog.objects.get(id=id)
return render(request, 'edit.html', {'blog' : edit_blog})
def update(request,id):
update_blog = Blog.objects.get(id=id)
update_blog.title = request.POST['title']
update_blog.writer = request.POST['writer']
update_blog.body = request.POST['body']
update_blog.pub_date = timezone.now()
update_blog.save()
return redirect('detail', update_blog.id)
def delete(reqeust,id):
delete_blog = Blog.objects.get(id=id)
delete_blog.delete()
return redirect('home')
2. urls.py에 path 생성하기
from django.contrib import admin
from django.urls import path
from blog.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('', home, name="name"),
path('<str:id>', detail, name="detail"),
path('new/', new, name="new"),
path('create/', create, name="create"),
path('edit/<str:id>',edit,name="edit"),
path('update/<str:id>', update, name="update"),
path('delete/<str:id>',delete, name="delete"),
]
3. detail.html에서 a태그를 통해 delete 구현
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Detail</title>
<style>
body{text-align: center;}
</style>
</head>
<body>
<h1>{{blog.title}}</h1> <br>
{{blog.writer}} <br>
{{blog.pub_date}} <br>
{{blog.body}} <br>
<a href="{% url 'edit' blog.id %}">수정하기</a>
<a href="{% url 'delete' blog.id %}">삭제하기</a>
</body>
</html>
4. runserver
NoReverseMatch에러가 났다....
Reverse for 'home' not found. 'home' is not a valid view function or pattern name.
뭐라나 뭐라나..... 음... 엄..... 코드 상에 문제는 없는데...
view.py에서 문제가 생긴듯하다... 하지만 다시 서버를 돌리면 삭제는 되어 있따...!
'Back-end > Django' 카테고리의 다른 글
[Django] Static (0) | 2021.07.19 |
---|---|
[Django] Template 상속 (0) | 2021.07.19 |
[Django] CRUD - Update (0) | 2021.07.19 |
[Django] CRUD - Create (0) | 2021.07.19 |
[Django] CRUD - Read (0) | 2021.07.19 |
댓글