0부터 시작하는 Django 공부 - 모델 활용하여 CRUD 구현

- Django에서 제공해주는 기능으로 form 클래스로 form필드를 중복해서 정의할 필요 없어 코드가 간단해진다
- 상속받아 사용자가 입력한 값이 올바른 값인지 자동으로 검증해줌
-
- form 객체를 생성하여 사용자에게 전달

- context에 form을 담아 html 파일에 입력 양식을 전달
-
1.4 html 수정

-
1.5 실행 페이지

-
1.6 data 저장

- 일일이 속성마다 명시해 줄 필요없이, form에게 전달하면 해당 form field에 맞게 바인딩되어 DB에 저장할 modle객체를 만들어 저장
- 사용자 입력 정보인 request.POST를 매개변수로 넣어 form data를 통해 form instance를 만든다.
- 이 form instance에 바로 DATA를 넣어주면 안되고, save를 통해 model 객체를 생성해 넣어줘야한다
- is_vaild : 유효성 검증을 실행해주며, 결과를 boolean으로 변환하여 반환한다

-
- save() : form에 바인딩 된 DATA에서 DB 객체를 만들어 저장하는 메소드로 매개변수로 instance, commit이 있다.
- 저장과정 : form data가 form instance에 저장되고, 그 다음에 form data가 model instance에 저장된다
- model과 form은 연관되있으며, model에 form 안에 저장된 model data를 반환하는 것으로, python 코드적으로는 변수에 model 객체를 저장하는 거다
- commit = false : 중복 DB 저장을 방지해 저장을 미루어 DATA를 저장하지 않고, model 객체를 반환해준다. 즉, DB에 저장하기 전에 특정 행위를 하고자 할 때 사용한다
- instance = model : model 객체를 넣어 수정할 대상을 지정해준다. save()를 하면 새 객체가 생성되는데 instance 값을 넣어주면, 새 객체가 아닌 기존 객체가 수정된다
2. GET & POST 합치기
- 조건문을 통해 request method에 따라 실행하는 동작을 다르게 하여 함수를 하나로 합친다. 따라서 get과 post를 따로 url과 함수를 사용할 필요 없이 하나의 url과 함수로 동작이 가능하다

- action을 명시 안하면 default값으로 동일한 url로 접속하게 한다

- 조회 : order_by로 순서대로 정렬가능

3. url으로 id 주기
4. 게시글 삭제
4.1 코드 추가 : 삭제 후 redirect를 통해 list로 돌아가게 설정

4.2 url 설정

4.3 redirect를 이용해 게시물 작성시 해당 게시물로 바로 이동하게 설정

5. 게시글 수정

- 먼저 조회가 가능해야되기에 post 불러옴
- get 방식의 경우 instance를 통해 불러온 post의 내용을 출력하고, 수정을 getdata와 동일하므로 동일한 template을 출력하여 사용자가 내용 입력하게 해줌

- 저장의 경우 원래 data를 수정해야하므로 post의 제목과 내용을 cleaned_data를 통해 원하는 data를 추출하여 저장하고 save, 출력 페이지는 readget 페이지 사용
- cleaded_data : is_vaild()를 통해 검증에 통과된 값은 cleand_data 변수명으로 제공된다

- 이런 방식도 가능

- form을 불러올때 instance에 불러온 객체를 넣어 조회를 하게 해주어, 새 form을 생성하는 것이 아닌, 이미 존재하는 Data를 수정 가능하게 한다
