● URL설정
페이지별 URL 생성 규칙표
페이지 | URL | |
대문 페이지 | 도메인/ | |
블로그 페이지 | 포스트 목록 | 도메인/blog/ |
포스트 상세 | 도메인/blog/포스트 PK | |
자기소개 페이지 | 도메인/about_me/ |
대문 페이지 : 도메인 또는 서버의 IP 주소 뒤에 아무것도 명시하지 않았을 경우 방문자를 위한 페이지
블로그 페이지 : 포스트 한 글들을 목록으로 보여주는 URL과 목록들 중의 포스트를 클릭 했을시 포스트 글과 댓글을 보여주는 포스트 상세 페이지
자기소개 페이지 : 자기소개를 위한 페이지
blog/urls.py 제작
urlpatterns 리스트에 URL과 들어왔을때 어떻게 처리할지를 입력한다.
● FBV 페이지 만들기
FBV 포스트 목록 페이지
blog/urls.py에 추가
from . import views는 현재 blog 폴더의 views.py를 사용하기 위해 가져오라는 뜻이다. 또한 입력된 URL이 blog/ 로 끝날시 views.py에 정의된 index()를 실행시키라는 뜻이다.
blog/views.py에 index() 함수 정의
index() 함수의 기능은 django 프레임워크에서 제공하는 render() 함수를 통해 blog 폴더의 index.html 파일을 찾아 방문자에게 보내준다.
탬플릿 파일 만들기
index() 함수에 의해 불러들일 index.html 파일을 만들고 관리를 용이하게 하기 위해 새로운 폴더을 만들어준다.
블로그 페이지에 포스트 목록 나열
포스트 목록을 나열하기 위해 blog 폴더의 views.py 파일에 models.py에 정의된 Post 모델을 import한다. index() 함수에서 Post.objects.all()로 모든 Post 레코드를 불러와 Posts에 저장한다. 그 후 마무리로 render() 함수로 posts를 딕셔너리 형태로 추가해 출력할 수 있도록 한다.
여기서 objects.all() 는 쿼리하고 한다. 쿼리는 DB에서 데이터 가져오기, 수정, 삭제등을 하기위한 요청이라 한다.
index.html 도 수정해 준다.
Post 모델의 필드값 보여주기
위의 .html 코드 입력은 단순히 포스트 번호와 제목을 보여줄 뿐이였다. 여기서 조금 더 상세하게 생성일 내용까지 보여줄 수 있도록 다음과 같이 코드를 다시 수정한다.
FBV 포스트 상세 페이지
포스트 상세 페이지 URL 정의
urlpatterns = [] 에 특정 pk를 가진 URL 이 들어올시 single_post_page 함수를 실행시키도록 한다.
single_post_page() 함수 정의
single_post_page() 함수는request 외에 pk 라는 매개변수가 하나더 추가되었다. 여기서 pk는 각 포스트에 부여된 번호로 지정되어 있으며 post.objects.get(pk=pk) 에서 pk가 1이면 1번 포스트의 레코드를 가져와 blog/single_post_page.html 에 render를 하도록 짜여져 있다.
템플릿 파일 만들기
포스트 제목에 링크 걸기
index.html 수정, get_absolute_url() 함수 정의
models.py 파일에 get_absolute_url 함수를 입력하여 레코드별 URL 생성규칙을 정의할 수 있다. 이 함수에서는 /blog/경로에 각각의 포스트에 부여된 pk 번호를 붙이는 것으로 URL 생성규칙을 정하였다.
그 후 웹 브라우저에서 소스 코드를 보면 URL 이 규칙에 따라 생성 되었음을 알 수 있다.
대문 페이지와 자기소개 페이지 만들기
single_pages 에 URL 지정, 대문 페이지와 자기소개 페이지에 URL 지정
도메인이나 ip뒤에 ' ' 즉 아무것도 없는경우 single_pages 앱에서 처리하도록 URL을 지정한다.
그 후 single_pages 폴더 안에 urls.py를 만들고 다음의 코드를 입력하여 대문, 자기소개 페이지 URL를 설정한다.
views.py에 함수 정의
views.py 파일에 landing, about_me 함수를 정의한다. 이 두 함수는 DB와 관련이 없으므로 render() 함수내에 딕셔너리 {}
인자를 전달할 필요가 없다.
템플릿 파일 만들기
landing 템플릿 작성
about_me 템플릿 작성
'Backend > Django + Bootstrap 개발 일지' 카테고리의 다른 글
10. 정적 파일 관리 (0) | 2022.07.14 |
---|---|
9. CBV로 페이지 제작 (0) | 2022.07.12 |
7. DB에 Post 모델 만들고 반영 (0) | 2022.07.11 |
6. App 개발 (블로그, 페이지) (0) | 2022.07.11 |
5. Django로 웹 사이트를 만들기 위한 기초적인 구성(프로젝트, DB 생성) (0) | 2022.07.11 |