본문 바로가기
Back-End/장고

장고 (기존 함수에서 클래스 형태로 전환, 로그인 후 글 작성, 리스트, 수정 삭제)

by AI Sonny 2022. 12. 2.
728x90

FBV(함수형 뷰)를 CBV(클래스형 뷰)로 변환

 

뷰를 체계적으로 관리하기 위해 함수형 뷰에서 클래스 형뷰로 변환한다.

 

CBV형으로 url을 다음처럼 수정한다.

 

 

views.py는 class로 수정한다.

 

 

위 코드에서 상속하는 것은 부모 클래스인 CreateView 클래스의 form valid()를 호출한다.

 

즉, 상위 클래스의 form_valid() 메서드에 의해 form.save()를 실행하고, success_url로 리다이렉트 된다!

 


로그인된 사람만 글 작성하도록 구현

데이터 모델을 수정한다!

 

 

데이터 모델을 수정한 경우는 python manage.py makemigrationpython migrate를 해줘야 한다.

 

글을 추가,삭제,변경에 관한 url도 추가해준다!

 

 

글을 작성하는 Form view도 수정한다.

 

 

form.instance.owner = self.request.user는 폼에 연결된

 

모델 객체의 owner필드에 현재 로그인된 user 객체를 할당한다.

 

이것도 community안에 views에 넣어준다.

 

 

LoginRequiredMixin은 사용자가 로그인 된 경우는 정상처리를 하고

 

로그인을 안한 경우 로그인 페이지로 리다이렉션 시킨다!

 

get_queryset()은 화면에 출력할 레코드 리스트 반환 Article 테이블의 레코드 중에

 

owner 필드의 소유 레코드만 필터링 해서 리스트 반환한다.

 

이 후 django_tutorial의 view 파일에 다음과 같이 클래스를 추가한다.

 

 

self.request.user는 폼에 연결된 모델 객체의 owner 필드에 현재 로그인 된 user 객체를 할당하고,

 

로그인 user 메모를 수정하는 것과 메모를 삭제하는 클래스를 만든다.

 

그리고 로그인 될 때 정상처리를 하도록 하고, 로그인이 안된 사용자는 로그인 페이지로 리다이렉션 시킨다.

 

 

믹스인 클래스를 추가하여 로그인한 소유자이면 정상처리를 하고,

 

소유자가 아니면 403익셉션 처리한다.

 

이 후 속성이 True면 403.html로 가고, False이면 로그인 페이지로 리다이렉트 처리한다.

 

 


템플릿 파일을 만들기!

write.html

 

 

view_detail.html

 

 

list.html

 

 

change_list.html

 

 

article_update.html

 

 

article_delete.html

 

 

다음과 같이 템플릿을 만든다.

 

결과!

 

로그인 안될 때

 

로그인 될 때
메모 글 작성

 

메모 글 수정

 

 

메모 글 삭제

 


마지막에 aws를 이용해서 배포까지 해봤다. 다음 주에 다시 할 예정이기도하고,

 

너무 급하게 한 탓에 내가 정리가 안되서 다음 주에 정리해야겠다.

728x90

댓글