본문 바로가기
Web/Django

[Django] 게시판 만들어보기 - Part 2 (상세 페이지 페이지 만들기)

by char_lie 2023. 3. 22.
반응형
반응형

Django를 이용하여 게시판을 만드는 과정을 따라가보자.

지난 CRUD의 C인 Create(생성)를 만든 것에 이어 R인 Read(읽기)를 구현해보자 한다.

https://edder773.tistory.com/90

 

[Django] 게시판 만들어보기 - Part 1 (글 작성 페이지 만들기)

Django를 이용하여 게시판을 만드는 과정을 따라가보자. 먼저 CRUD의 C를 한번 진행해보려고한다. https://edder773.tistory.com/89 [Django] 기초 무작정 시작하기 - Part 2 https://edder773.tistory.com/88 [Django] 기초

edder773.tistory.com

내용은 여기서 뒤로 이어진다.

우리가 만드려 하는 것은 게시판 글의 상세페이지로 이동하여 글을 볼 수 있게 만들 것이다.


R을 구현하기에 앞서 Variable routing의 개념에 대해서 이해할 필요가 있다.

Variable Routing

  • 웹 페이지를 보다보면 일부 내용만 살짝 바뀌고 전체 내용은 비슷한 경우를 많이 볼 수 있음
  • 이럴 경우 전부 html 파일로 새로 만들지 않고, URL 주소를 변수로 할당해서 사용할 수 있음.
  • 예를 들어 내 블로그 상단의 URL을 보면 edder773.tistory.com/숫자 로 구현된 것을 볼 수 있고, 뒤에 숫자에 해당하는 변수 할당하는 과정
  • 이 숫자를 변수로 지정하여 view 함수의 인자 넘겨, 하나의 path()에 여러페이지를 연결하는 과정
urlpatterns = [
	path('example/<number>/', views.example),
    ]
  • 위 예시처럼 <>에 변수를 정의하여 인자로 할당할 수 있고, 기본적으로 string으로 정의됨.
  • 이 변수를 view에서 def 함수에서 변수로 할당 받아서 사용하면 된다.

게시글의 상세 페이지를 만들어서 읽어보기 

자 그럼 다시 했던 기본 세팅을 하나씩 다시 넣어보자.

먼저 앱 파일의 urls에 들어가서 read를 추가해주자.

여기서 path를 보면 variable routing을 이용해서 지정해주었는데, 우리가 일반적으로 사용하는 게시판은 내용만 다르고 구조가 다른 형태이다. → 이걸 숫자 변수만을 이용해서 페이지를 띄워줄 수 있게 만들어주기 위해(여러 html파일을 만들지않기 위해) 사용해서 만들 것이다.

여기까지 했으면, views에서 read를 정의해주자.

read를 정의해주는 과정에서, 우리는 pk 값을 변수로 사용해서 받을 것이니 함수에서 변수로 정의해주었다.

이 값의 변수를 articles로 값을 지정해주고, 받은 값을 content로 해서 읽을 수 있도록 넣어주었다.

추가적으로 create에서 redirect의 지정을 index가 아닌 read로 변경해주었다. 즉, 글을 작성 → 바로 상세페이지를 볼 수 있도록 구성하기 위해 지정해주었다.

그럼 이제 상세페이지인 read.html을 만들어보자.

마찬가지로 앱내의 templates 폴더에 read.html을 생성해준다.

그러고 다음과 같이, 상세 내역을 표시해줄 수 있게 작성해준다.

여기까지 작성해도 되지만, 나는 편의상 여기서 한가지를 더 추가로 작성하겠다. 매번 index로 돌아가기 위해서는 따로 버튼을 만들어주면 편하게 돌아갈 수 있으니, a 태그를 이용해서 링크를 연결해주었다.

또한 index.html에서 상세 페이지를 넘어가기 위해 만들어 주자.

여기까지 작성을 완료했다면, 정상 작동하는지 확인을 위해서 runserver를 해서 확인해보자

 

index 페이지에 글의 상세 내용에 정상적으로 태그가 생긴것을 확인할 수 있고, 이걸 누르면 상세페이지로 이동할 수 있다.

상세페이지까지 정상 작동하고, 글 쓰기를 통해 추가 할 경우도 정상적으로 추가되면서 상세페이지로 이동하는 것을 확인할 수 있다.

 

여기까지가 상세페이지(Read)를 구현하는 과정이고, 다음은 U(update, 수정)하는 것을 구현해볼 예정이다.

 

 

반응형

댓글