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"),
'개발 > Django_python 웹 프레임워크' 카테고리의 다른 글
Blog project_Create 3 : CSRF 공격(Cross Site Request Forgery) (0) | 2020.07.13 |
---|---|
[Django] render함수 vs redirect 함수 (1) | 2020.07.12 |
Blog project_Create 글쓰기 만들기/CRUD (0) | 2020.07.12 |
Blog project_pk, path converter, get_object_or_404 (0) | 2020.07.09 |
Django - Model & admin (1) | 2020.07.06 |
댓글