일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- react
- 알고리즘 풀이
- DRF
- web
- Algorithm
- django ORM
- django widget
- form
- django rest framework
- 장고
- java
- Django
- PYTHON
- API
- HTML
- AWS
- es6
- 파이썬
- Baekjoon
- 파이썬 알고리즘
- 알고리즘 연습
- 백준
- 알고리즘 문제
- javascript
- js
- CSS
- c++
- 알고리즘
- Git
- MAC
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[django] 글 수정 시 기존의 내용 불러오기 본문
글 수정 시 기존의 내용 불러오기
글 수정 기능을 구현했지만 수정을 하게 되면 처음부터 글을 다시 쓰는 것과 다를 바가 없었다. 따라서 이를 해결하기 위해서 기존의 데이터를 불러오도록 했다.
먼저 기존에 존재하던 글 수정 함수 edit을 살펴보자.
from .form import CatPost
def edit(request, cat_id):
cat = Cat.objects.get(id=cat_id)
# 글을 수정사항을 입력하고 제출을 눌렀을 때
if request.method == "POST":
form = CatPost(request.POST, request.FILES)
if form.is_valid():
print(form.cleaned_data)
cat.name = form.cleaned_data['name']
cat.image = form.cleaned_data['image']
cat.gender = form.cleaned_data['gender']
cat.body = form.cleaned_data['body']
cat.save()
return redirect('/detail/'+str(cat.pk))
# 수정사항을 입력하기 위해 페이지에 처음 접속했을 때
else:
form = CatPost()
context={
'form':form,
'writing':True,
'now':'edit',
}
return render(request, 'postapp/create_edit.html',context)
현재 프로젝트에서 각각의 글이 고양이에 대한 정보이기 때문에 cat이 하나의 글이라고 생각하면 된다. request
방식에 따라서 두 가지 기능을 처리한다.
-
POST
이 경우에는 글의 수정사항을 모두 입력하고, 제출을 눌렀을 경우이다. 입력한 내용들을 가져와 저장을 해주고 해당 글의 detail 페이지로 redirect 해준다.
-
GET
지금은 else로 처리를 해놨지만 GET 방식으로 들어왔을 경우이다. 기존의
form.py
에서 입력 폼을 가져온다.from django import forms from .models import Cat class CatPost(forms.ModelForm): class Meta: model = Cat fields = ['name','image','gender','body']
기존의 내용을 불러오기 위해서는 form을 가져올 때 설정해주어야 한다. 간단하게 설정해줄 수 있는데 다음과 같다.
form = CatPost(instance = cat)
instance라는 속성에 위에서 미리 지정해놓은 글의 객체를 설정하면 현재의 내용을 유지한 채로 form이 나타난다.
'웹프로그래밍 > Django' 카테고리의 다른 글
[Django] 기본세팅하기 (0) | 2019.05.01 |
---|---|
[Django]투표 기능 구현하기 (0) | 2019.04.06 |
[Django] 17. 글 삭제 및 수정 구현하기 (4) | 2019.03.24 |
[Django] 많이들 하는 실수, html 파일의 위치 (0) | 2019.03.11 |
[Django] requirements.txt 를 통한 패키지 종속성 관리 (0) | 2019.03.06 |
Comments