[django] python django 게시판 만들기 - form 이용하기, 글 수정 instance 가져오기
글 수정 html을 더 간단하게 model기반으로 만든 forms.py 이용하기
수정할때 기존글을 불러오는 instance
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
글 수정 기능 만들기 : https://integer-ji.tistory.com/100
글 삭제 기능 만들기 : https://integer-ji.tistory.com/101
forms.py 만들기
from django import forms
from .models import Blog
class BlogUpdate(forms.ModelForm):
class Meta:
model = Blog
fields = ['title','body']
BlogUpdate라는 form를 만듭니다.
안에는 model을 기반으로 forms클래스의 modelform을 인자로 넘겨줍니다.
views.py 수정하기
def update(request, blog_id):
blog = Blog.objects.get(id=blog_id)
if request.method =='POST':
form = BlogUpdate(request.POST)
if form.is_valid():
blog.title = form.cleaned_data['title']
blog.body = form.cleaned_data['body']
blog.pub_date=timezone.now()
blog.save()
return redirect('/crudapp/detail/' + str(blog.id))
else:
form = BlogUpdate(instance = blog)
return render(request,'update.html', {'form':form})
기존의 update 함수를 수정하였습니다.
form = BlogUpdate를 가져오며 이를위해 forms.py를 import 해줍니다.
방식이 POST라면 save를 하며 cleaned_data를 사용해 저장합니다.
GET방식이라면 BlogUpdate를 가져옵니다.
하지만 여기서 가져올때 instance = blog라는 소스를 통해 기존의 해당 게시글의 정보를 가지고 옵니다.
update.html 수정하기
{% extends 'base.html' %}
{% block content %}
<br>
<div class="container">
<form method="POST">
{% csrf_token %}
<table>
{{form.as_table}}
</table>
<br>
<input class="btn btn-dark" type="submit" value="수정하기">
</form>
</div>
{% endblock %}
기존의 창을 전부 없애고
table안에 {{form.as_table}}를 넣어줍니다.
입력폼은 as_table(), as_p(), as_ul() 등 여러가지 있습니다.
확인
기존의 글을 그대로 가져옵니다.
정상적으로 같은 글에 저장이 됩니다.
git push
git init
git add .
git commit -m "코멘트"
git push origin master
---
'코딩공부 > Python Django' 카테고리의 다른 글
django q객체를 이용한 검색기능 만들기 (2) | 2020.02.27 |
---|---|
django Pagination 처리하기 (0) | 2020.02.27 |
[django 실습] 게시판 만들기 - 글 삭제 기능 만들기 (3) | 2020.02.23 |
[django 실습]게시판 만들기 - 글 수정 기능 만들기 (2) | 2020.02.22 |
[django 실습]게시판 만들기 - 글 쓰기 기능 만들기 (7) | 2020.02.21 |