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가 가지고 있는 고유번호
<a href="{% url 'blog' %}">목록으로</a>
<a href="{% url 'edit' blog.id %}">수정하기</a>
<a href="{% url 'delete' blog.id %}">삭제하기</a>
<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>
urlpatterns = [
path('blog/<int:blog_id>/edit', myapp.views.edit, name='edit'),
path('blog/<int:blog_id>/update', myapp.views.update, name='update'),
]
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))
def delete(req, blog_id):
blog = get_object_or_404(Blog, pk = blog_id)
blog.delete()
return redirect('/blog/')
urlpatterns = [
path('blog/<int:blog_id>/delete', myapp.views.delete, name='delete'),
]