2021 프로그래머스 인공지능 데브코스/django

[5주차 - Day2] 실습: django - Model을 admin 페이지 외에서 보이기

heejuhee 2021. 5. 18. 23:43

 

목표

: 이전에 작성한 coffee model은 admin 페이지에서만 확인할 수 있었다

이제 client도 확인할 수 있게하자!

 


실습

1. views.py에서 우리가 만든 model을 import해보자

  1. 만들었던 model을 import
  2. def coffee_view 만들어주고
  3. return으로 템플릿은 coffee.html(나중에 새로 만들어줄것) coffee_all을 해준다

*참고로 Coffee.objects.all()에서 .get(), .filter()등으로 몇몇만 가져올 수 도 있다.

 

 

2. coffee.html을 작성해준다

: 간단히 받아온 커피 리스트를 출력해주자

 

3. 화면에서 보기 위해 url에서 path등록을 해주자

* coffee_view()가 아니라 coffee_view이다. 괄호까지 치게되면 다음 오류가 나온다

typeError missing 1 required positional argument 'request'

 

 

4. /coffee/로 접속하면 만든 커피리스트가 뜬다

짠!!!!

 

추가) 좀 더 잘보기 위해 수정하자

 

끝~~~ SQL과 비슷한 느낌이 난다

 

 

근데 매번 관리자계정에서 추가하기 귀찮다

POST처럼 구현할 순 없을까?

 


실습2: Form으로 Template에서 Model 수정하기

목표

: POST처럼 구현해 관리자 계정에 접속하지 않아도 데이터를 추가해보자

 

1. forms.py에서 기존 class를 삭제하고 class CoffeeForm이라는 Form을 구현

: .models에서 Coffee를 import해서, Model 호출해보자

그 뒤 CoffeeForm을 통해 ModelForm을 상속받는 CoffeeForm을 생성한다.

(클래스 안 클래스를 생성하는데 이걸 Nested Class라고 한다)

 

2. views.py에서 정보를 템플릿으로 전달

: 모델의 정보를 템플릿으로 전달한것처럼, 뷰에서 정보를 템플릿으로 전달하자

 

3. coffee.html에서 view에서 보낸 정보를 받아 작성하자

: 아래와 같이 작성

폼 안에 데이터를 저장하기 위한 save 버튼도 작성해주자

 

그런데 이 상태로 페이지에 접속 해 데이터를 입력해보면...

 

 

 

버튼 누르면 될 것 같지만..! 보안문제로 CSRF 토큰 삽입해야한다

토큰도 마저 작성해주자

오류는 안나지만 save 눌러도 아무런 변화가 일어나지 않는다.

view에서 폼이 유효한지 검사하고 유효하다면 저장하는 부분을 추가로 작성해줘야한다.

 

4. views.py에서 POST라면 저장하도록 작성하자

: request method가 POST라면,

form = CoffeeForm(request.POST)을 통해 완성된 form을 저장하고,
if form.is_valid()을 통해 채워진 form이 유효한지 검사 후
유효하다면 form.save() 이 form 내용을 model에 저장하자

 

*참고로 valid임 vaild가 아니라... 오타조심..

 

이제 admin 안 거치더라도 이렇게 확인이 가능하다!