emluy 개발 일기

Django 웹 8 - Model object 2개 1:N 연결 본문

웹 개발/Django

Django 웹 8 - Model object 2개 1:N 연결

yulme 2020. 4. 23. 23:01
SMALL

** MTV 패턴 생성 순서

: models.py에 class 정의 -> views.py에서 models.py 정의한 것 바탕으로 data 가져오는 함수 작성 -> templates 에서 보여주기

 

** MTV 패턴 작동 순서

: models.py class로 object 만들기 ->  urls.py 에서 views,py의 함수 호출 -> views.py에서 함수 실행 -> templates에서 보여줌

 

     한 html에서 다른 html 호출시

      models.py class로 object 만들기 -> templates에서 a태그로 url 호출-> urls.py 에서 views,py의 함수 호출

      -> views.py에서 함수 실행

 

<사람마다 쓴 글 따로따로 볼 수 있는 홈페이지 만들기>

 

전체적인 흐름

보라색 : 만드는 순서

파란색 : pk 흐름

 

 

0. 앱 폴더 만들기 (personpost)

: settings.py 해주기, templates 폴더 생성

 

 

 

1. 사람 정보 보여주는 people.html 생성

-> urls.py 에 기본 설정 해 줌

-> views.py에 people함수 생성 (기본 틀)

 

 

2. 사람 정보 담을 model 생성 

: models.py에 다음과 같이 class People 생성

-> $ python manage.py makemigrations 

-> $ python manage.py migrate

 

personpost/models.py

 

 

 

3. views.py에 people object 가져오는 함수 정의

personpost/views.py

 

3-2. admin에 계정 생성

: python manage.py createsuperuser

 

3-3. admin 페이지 들어가서 people에 데이터 입력하기

 

 

 

 

 

4. people.html에 3번의 함수 people를 통해 전달받은 people_list 이용하여 각 사람의 data 보이기

personpost/people.html

=> 가져온 people 객체의 name 눌렀을 때 그 사람이 쓴 post 볼 수 있도록 a 태그로 그 사람의 pk를 post.html 에 넘겨줌

 

 

 

 

 

 

5. 넘겨 받은 pk를 url에서 보여지게 함

personproject/urls.py

post에 대한 것 아직 안만들었지만 일단 url 부터 생성!

=================================================================================================

 

 

 

 

 

 

이제 post 

 

6. 각 사람이 쓴 글 보여주는 post.html 생성

 

 

 

 

 

7. post 정보 담을 Class 생성

personproject/models.py

create_data에 timezone 쓰려면 from django.utils import timezone 해줘야함

 

 

 

 

 

 

8. 6번 Post class로 만든 객체 활용할 post함수 만듬

personproject/views.py

=> 여기서 의문 : 어떻게 People.objects.get(pk=post_pk) 하면 이름이 받아와지는 걸까?

 

 

 

 

 

9. post.html 에 쓴 글 보여주는 코드 작성

personproject/post.html

 

======================================================================================================

완성된 화면

people.html

 

post.html

반응형
Comments