edit : edit.html 보여줌
update : 데이터베이스에 적용
create 와 다른 점
⇒ 수정할 데이터의 id 값을 받아야 함
def edit(request, id):
edit_blog = Blog.objects.get(id = id)
return render(request, 'edit.html', {'blog':edit_blog})
Python
복사
path-converter 로 받을 id 를 수정하는 창 보여줌
path('edit/<str:id>', edit, name="edit"),
Python
복사
—> 요청을 받을 <a> 태그는 detail.html 에 추가
<a href="{% url 'edit' blog.id %}">수정하기</a>
HTML
복사
—> templates 에 edit.html 생성
new.html 과 기본 형식은 같으나 제목, action 이 다르고 본문에 추가
⇒ 값을 받아와야 함 : values
<h1>Update Your Blog</h1>
<form action="" method="post">
{%csrf_token%}
<p>제목: <input type="text" name="title" value="{{blog.title}}"></p>
<p>작성자: <input type="text" name="writer" value="{{blog.writer}}"></p>
본문: <textarea name="body" id="" cols="30" rows="10">{{blog.body}}</textarea>
<button type="submit"> submit</button>
</form>
HTML
복사
수정하기가 아직은 반영되지 않음 : action 이 없음 → update
—> id 값에 해당하는 객체의 column 을 edit 에서 온 정보들로 덮어 씌움
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)
Python
복사
path('update/<str:id>', update, name="update"),
Python
복사
def update(request, id): 의 id 같이 매개변수를 받을 때 urls.py 에 path-converter 필수(<str:~>), path-converter 썼을 때 edit 으로 가는 detail.html 의 <a> 태그나 edit.html 의 action (a? 태그) 의 뒤에 어떤 값을 함께 줘야 함
—> 페이지 돌려보기!