City At Night

Django! 3. 게시물을 읽어보자! READ(1) 본문

Django 기초

Django! 3. 게시물을 읽어보자! READ(1)

Wuny 2020. 9. 9. 00:39
728x90
반응형

자 저번 시간에 배웠던 CREATE(1) 기억나죠?

이젠 그 게시글을 읽어볼거에요 

홈페이지 게시판 목록에 쭈루루룩 나오는것도 READ이고  그 중 글 하나를 클릭해서 자세히 보는것도

READ입니다! 

 

자 닥치고 바로 시작합시다

 

첫 시간 강조했던 순서 기억나시나요?? 

기억 안나신 분들을 위해 한번더 간략하게 말씀드리면

urls -> views -> (templates, models) 입니다! 템플릿과 모델은 꼭 필수사항이 아니예요

views에서 response로 바로 데이터를 던져줄 수 있기때문이죠 .

 

그럼 READ도 저 순서대로 만들어 볼게요!

views가 함수를 정의하는 곳이라고 했죠? 저희는 메인페이지에 게시글들을 보여줄거고 함수이름은 index으로 할거고 name도 헷갈리지않게 index로 해주세요.

 

name은 어디서 사용하냐구요?

 템플릿에서 함수를 호출할때 사용합니다!  name은 간단하게 views.index의 함수를 index라고 부르겠다라고 생각하세요

 

자 이제 index라는 뷰를 만들기 위해 views.py로 이동하기전

 

내 앱 아래 templates 폴더를 만들고 그 아래 index.html을 먼저 만들어주세요

이제 html은 templates에서만 작성할거에요

 

 

 

여러분 views 함수에서 dictionary의 key값으로 html에서 사용하여 values를 보여준다고 첫시간때 살짝 언급했습니다.

이해를 안가시는 분들을 위해서 예를 보여드립니다

context안에 content의 key값으로 '내용내용내용'이라는 values를 가지네요. 

html에 '내용내용내용'이라는 글을 보여주기 위해선 

 

이렇게 {{ key name }}으로 해주면됩니다

 

한번 확인해볼까요

 

짜잔  이렇게 나오죠!

 

 

자 그럼! 저희는 Post모델에 작성된 데이터를 가져와 보여줘야하기 때문에

index함수로 Post 데이터를 가져오고

이 데이터를 values로 초기화해서 가져오면 되겠네요!

 

천천히 가져오는것 부터 시작해봅시다

 

models.py의 Post class를 import 해주는건 당연하죠?

 그 다음 Post클래스안에 objects의 모두(all)를 post라는 변수에 초기화 해줍니다.

  context 딕셔너리를 생성하고 'post'라는 key를 만들어준 다음 values로  post변수를 설정합시다 

그럼 'post'라는 키안에 Post클래스안에 objects의 모두(all)가 들어있겠죠?

그 다음 retrun 함수를 사용해주세요!  설명안해도 아시겠죠?

 

 

이젠 index.html로 갑시다

 

index view함수에서 선언한 key post를 써주시구요

서버를 실행한 후 봐볼까요?

 

어라 ? 나오긴 하는데..이상하죠?

왜냐하면 post라는 자체를 가져왔기때문이에요. 원래는 post 안에 author이 있고 body가 있고 image가 있는거죠.

그런데 post를 써버리니 post자체의 데이터를 가져온겁니다.

 

저희는 for문을 써서 필요한것만 가져올게요 

필요한거라면  작성자,제목,본문,이미지가 있겠네요.(models에 이것만 만든건 함정..)

for문을 돌며 필요한 속성을 하나씩 빼왔습니다! 

네 필요한것만 가져오니 아까보다 깰끔해졌죠? 

 

여러개도 나오는지 볼까요? admin사이트에서 몇개 더 추가해주시고 확인해보세요!

그냥 막 추가하면 줄줄줄 붙어서 출력되니

 div태그로 묶어 주시면 깔끔하게 게시물 별로 출력 됩니다~

자 여러분들은 Read를 할 수 있게 됐습니다!

 

지금은 메인화면에

작성자/제목/본문내용/ 이렇게 나오는데

작성자/제목/작성시간 이렇게 수정하고 

제목을 클릭할시 본문내용과 디테일한 내용이 나오도록 해볼게요!

 

다음시간은 쫌 복잡한 내용이 들어가니 오늘 내용정도는 이해 잘하셔야합니다!

728x90
반응형
Comments