[django] python django 게시판 만들기 - 글 수정 기능 만들기
model, admin 설정 : https://integer-ji.tistory.com/89
views에 데이터 가져오기 : https://integer-ji.tistory.com/90
detail page 만들기 : https://integer-ji.tistory.com/91
setting 설정, 데이터 자르기, 정렬하기 : https://integer-ji.tistory.com/93
getbootstrap으로 홈페이지 꾸미기 : https://integer-ji.tistory.com/94
템플릿 상속, url 관리하기 : https://integer-ji.tistory.com/95
디자인 쪼끔 수정 : https://integer-ji.tistory.com/97
글 쓰기 기능 만들기 : https://integer-ji.tistory.com/99
언제나 시작은 가상 환경 실행, 디렉터리 이동
source myvenv/Scripts/activate
cd crudproject/
새로운 페이지.html 생성하는 방법
html을 만들면 해야할것 3가지
1. templates 폴더 안에 html파일 만들기
2. views.py에 함수 설정하기
3. urls.py url 만들기
crudapp/templates/update.html 만들기
{% extends 'base.html' %}
{% block content %}
<br>
<div class="container">
<form method="POST">
{% csrf_token %}
<h4>제목: </h4>
<input type="text" name="title">
<br>
<br>
<h4>본문: </h4>
<textarea cols=40 rows=10 name="body"></textarea>
<br>
<br>
<input class="btn btn-dark" type="submit" value="수정하기">
</form>
</div>
{% endblock %}
내용은 create.html의 내용을 복사해 줍니다.
이번엔 다른 방법으로 수정을 해봅시다.
form의 method를 POST로 설정합니다.
POST방식으로 전송하기 위해 {% csrf_token %}를 설정합니다.
( 보내는 문자를 보안하는 코드 )
이제 submit가 눌리면 POST방식으로 form이 실행됩니다.
views.py update 함수 설정
from django.utils import timezone
def update(request, blog_id):
blog = Blog.objects.get(id=blog_id)
if request.method == "POST":
blog.title = request.POST['title']
blog.body = request.POST['body']
blog.pub_date = timezone.datetime.now()
blog.save()
return redirect('/crudapp/detail/' + str(blog.id))
else:
return render(request, 'update.html')
기존 postcreate는 글쓰기를 만들기 위한 create 함수와
글 내용을 등록하는 postcreate 함수 두 개를 만들어 줬습니다.
update도 수정할 페이지 함수와 글을 저장할 함수 두 개를 만들 수 있지만
GET 방식과 POST 방식을 이용해 하나의 함수로 두 가지 기능을 만들 수 있습니다.
만약에 request.method가 POST라면
글을 수정하여 저장을 하고
else일 경우에는 update.html을 띄워줍니다.
crudapp/urls.py url 설정하기
from django.urls import path
from . import views
urlpatterns = [
path('new/', views.new, name='new'),
path('detail/<int:blog_id>/', views.detail, name='detail'),
path('create/', views.create, name='create'),
path('postcreate/', views.postcreate, name='postcreate'),
path('update/<int:blog_id>/', views.update, name='update'),
]
수정하기 페이지를 진입하기 위한 update url 생성
수정할때와 수정한 내용을 저장하기 위해 해당 blog_id가 필요함으로 같이 받아줍니다.
확인
blog.id가 25번째인 글이 있습니다.
수정하기를 누르면
crudapp/update/25의 update.html로 넘어갑니다.
내용을 입력 후 글을 수정해 보면 25번째 글 그대로 글이 수정된 모습을 볼 수 있습니다.
git push
git init
git add .
git commit -m "코멘트"
git push origin master
- 끝 -
---
하지만 기존의 글을 수정 페이지에 가져오고 싶다면??
https://integer-ji.tistory.com/102
참고하시면 됩니다!
'코딩공부 > Python Django' 카테고리의 다른 글
[django 실습] 게시판 만들기 - form 이용하기, 글 수정 instance 가져오기 (4) | 2020.02.24 |
---|---|
[django 실습] 게시판 만들기 - 글 삭제 기능 만들기 (3) | 2020.02.23 |
[django 실습]게시판 만들기 - 글 쓰기 기능 만들기 (7) | 2020.02.21 |
[django 실습] 게시판 만들기 - 디자인 수정 기록 (0) | 2020.02.21 |
[django 실습] 게시판 만들기 - 템플릿 상속, url 관리하기 (0) | 2020.02.21 |