FBV(함수형 뷰)를 CBV(클래스형 뷰)로 변환
뷰를 체계적으로 관리하기 위해 함수형 뷰에서 클래스 형뷰로 변환한다.
CBV형으로 url을 다음처럼 수정한다.
views.py는 class로 수정한다.
위 코드에서 상속하는 것은 부모 클래스인 CreateView 클래스의 form valid()를 호출한다.
즉, 상위 클래스의 form_valid() 메서드에 의해 form.save()를 실행하고, success_url로 리다이렉트 된다!
로그인된 사람만 글 작성하도록 구현
데이터 모델을 수정한다!
데이터 모델을 수정한 경우는 python manage.py makemigration 과 python 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를 이용해서 배포까지 해봤다. 다음 주에 다시 할 예정이기도하고,
너무 급하게 한 탓에 내가 정리가 안되서 다음 주에 정리해야겠다.
'Back-End > 장고' 카테고리의 다른 글
장고 스크랩핑 구현 (0) | 2022.12.06 |
---|---|
EC2 서버에서 장고 실행시키기! (0) | 2022.12.05 |
장고 (데이터 중복 처리 기능 / 이미지 넣기 / footer 하단 고정 / 로그인, 회원가입, 로그아웃, 비밀번호) 구현 (0) | 2022.12.01 |
장고 데이터 시각화 (dashboard) (0) | 2022.11.30 |
장고 메모 입력 기능 만들고 데이터 생성 및 조회 (0) | 2022.11.29 |
댓글