📢 공지사항
home

CRUD - Update

번호
17
비고
12:24
주차
5월 둘째주
확인
edit : edit.html 보여줌
update : 데이터베이스에 적용
create 와 다른 점
⇒ 수정할 데이터의 id 값을 받아야 함
—> views.py 에 다음 코드 작성
def edit(request, id): edit_blog = Blog.objects.get(id = id) return render(request, 'edit.html', {'blog':edit_blog})
Python
복사
—> urls.py 에 path-converter 만들기
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
복사
—> urls.py 에 path-converter 작성
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? 태그) 의 뒤에 어떤 값을 함께 줘야 함
—> edit.html 의 action 에 {%url 'update' blog.id %} 추가
—> 페이지 돌려보기!