emluy 개발 일기

Django 웹 13 - Function CRUD (수정중) 본문

웹 개발/Django

Django 웹 13 - Function CRUD (수정중)

yulme 2020. 5. 12. 00:51
SMALL

0. 기본 setting

- 프로젝트 : crud

- 앱 : classcrud, functioncrud

 

 

 

 

1. fuctioncrud 앱폴더안에 templates폴더 만들고 functioncrud폴더 만들고 index.html 만들기

- views.py랑 urls.py 기본틀 작성해주기

# fuctioncrud 앱폴더의 views.py

함수이름 index 안하고 welcome이라고 해줌

 

 

 

 

 

2. crud 프로젝트 폴더의 urls.py 작성

: functioncrud와 classcrud 각각 urls 받아오도록 include 사용하여 작성

 

 

 

 

 

 

3. Create, Read, Update, Delete 함수 url 작성

 : functioncrud의 urls.py 만들고 각각 함수 작성

 

 

 

 

 

 

4. Create, Read, Update, Delete 함수 정의

  : functioncrud의 Views.py에 함수 정의

 

 

 

 

 

 

5. CRUD 할 Blog class 만들기

  : functioncrud의 models.py에 class Blog 정의

 

 

 

 

 

 

 

6. 입력받을 데이터 form 지정

  : functioncrud에 forms.py 만들고 form 작성

 

 

 

 

 

 

 

7. Read 함수 정의 

: functioncrud의 views.py에 Import 해줄거 해주기 & 함수 정의

7-1. Blog 객체 나타내기

: for문 사용

 

 

 

 

 

8. Create 함수

8-1. create 함수 url 정의

  : functioncrud의 urls.py에 create url 정의

8-2. Create 관련 html 작성 - 새로운 데이터 입력받을 html 작성

: functioncrud의 templates에 new.html 작성

method = 'POST' : action 안써주면 자기 자신 html로 전송됨

{%crsf_token%} : 보안상 이유로 씀

{{form.as_table}} : forms.py에서 작성한 NewBlog에서 입력받을 애들을 table형식으로 보여라

8-3. Create 함수 정의 - 데이터를 입력받을 홈페이지 띄우기 & 입력받은 데이터 전송하기 (한 홈페이지에서 할 것임)

  : functioncrud의 views.py에 create 함수 정의

- if else 문 사용 : request의 method에 따라 다르게 처리

if request.method == 'POST'   메소드가 POST라면 입력한 데이터가 전달온 것이므로 저장시킨다.
form = NewBlog(request.POST)   POST로 들어온 NewBlog형식의 request를 form 변수에 저장
if form.is_valid:  유효한 값인가?
post = form.save(commit=False)  NewBlog form 대로 post에 옮겨놓긴 해 일단!
commit=False -> 근데  아 직은 save 하지마 ! 날짜 입력없잖아!
post.pub_date = timezone.now() 지금 시간 저장
post.save()        이제 저장해
else : 메소드가 GET이라면 데이터를 입력할 form을 띄운다.

 

 

 

 

 

 

 

 

9. Delete a태그 달아서 html에 보이기

 : functioncrud의 functioncrud.html에 삭제를 a태그로 나타내줌

9-1. Delete 함수 url 만들기

 : functioncrud 의 urls.py에서 delete url 생성

- 특정 게시물 지울것이므로 pk 필요!!

- 이때 pk=blog.id 대신에 그냥 blog.id 적어주고 delete 함수에서 def delete(request,pk) 대신 def delete(request, blog.id)이렇게 적어줘도 됨

9-2. Delete 함수 정의

 : functioncrud 의 views.py에 delete  함수 정의

 

 

 

 

 

 

 

 

 

10. Update a태그 달아서 html에 보이기

 : functioncrud의 functioncrud.html에 수정을 a태그로 나타내줌

10-1. Update 함수 url 만들기

 : functioncrud의 urls.py에서 update url 생성

- 특정 게시물 수정할 것이므로 pk 필요!!

10-2. Update 함수 정의

 : functioncrud의 views.py에서 update 함수 정의  

blog = get_object_or_404(Blog, pk=pk) pk에 해당하는 Blog객체를 blog에 저장
form = NewBlog(request.POST, instance=blog) 위에서 가져온 blog 에 해당하는 입력할 수 있는 입력 공간 가져와서 form에 저장

if form.is_valid():

form.save()

return redirect('home')

 

form 입력 사항이 유효하면
저장하고
home으로 돌아가라

return render(request, 'functioncrud/new.html', {'form': form})

form 입력사항 유효하지 않으면
new.html 가서 새로운 입력 해라

 

반응형
Comments