JangGeonWu
janggeonwu97
JangGeonWu
전체 방문자
오늘
어제
  • 분류 전체보기 (78)
    • SQLD (21)
    • 개인 공부용 (17)
    • Django (9)
    • Tableau (6)
    • ElasticSearch (8)
    • 빅데이터 엔지니어 (5)
    • Spring 퀵 스타트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개인 공부 기록용 블로그

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
JangGeonWu

janggeonwu97

페이지 구성 개선하기
Django

페이지 구성 개선하기

2022. 10. 27. 15:49

Doit Django의 10장 실습을 정리한 글입니다.


1. 포스트 목록 페이지의 문제 파악하기

Head Image 할당을 해제하고 blog 페이지에 들어가면

 

대표 이미지가 없어서 에러가 발생한다.

즉, 대표 이미지가 없어도 에러를 발생시키지 않도록 해야 한다.

 

2. If문으로 조건에 따라 이미지 보여주기

가장 간단한 조건문인 if-else문으로, 대표 이미지가 없을 때는 텍스트만 보이게 해보자.

blog/templates/blog/index.html

p.head_image가 존재하면 True, 그렇지 않다면 False가 적용된다.

대표 이미지가 없는 포스트도 오류 없이 잘 나타냄

 

상세페이지에도 적용시키자.

blog/templates/blog/single_post.page.html
대표 이미지가 없는 포스트도 오류 없이 잘 나타냄


3. 첨부 파일이 있는 경우 다운로드 버튼 만들기

File이 upload된 post

방문자가 포스트에 첨부된 파일을 내려받을 수 있는 버튼을 만들어보자.

 

blog/templates/blog/single_post_page.html

위에서 a 태그 내의 class는 버튼 디자인을, role은 button 형식임을, download는 파일을 내려받을 수 있도록 한다.

 

포스트 상세 페이지에 생성된 download 버튼

 

4. 첨부 파일명과 확장자 아이콘 나타내기

다운로드가 되는건 좋지만, 다운로드 하기 전에 첨부 파일 이름과 확장자를 알려주면 좀 더 마음 편하게 다운로드 할 수 있을 것이다. 기왕이면 아이콘도 추가하고!

 

우선 이름과 확장자를 알려주는 함수인 get_file_name()과 get_file_get()를 만들어보자.

blog/models.py

아이콘을 나타내기 위해 font awesome link를 연결하고

blog/templates/blog/single_post_page.html

아이콘과 파일이름을 출력하자

blog/templates/blog/single_post_page.html
아이콘과 파일명 출력

더 다양한 아이콘을 사용하기 위해서 부트스트랩 아이콘을 사용해보자

https://icons.getbootstrap.com/#install

 

Bootstrap Icons

Official open source SVG icon library for Bootstrap

icons.getbootstrap.com

CND의 저 link를 복사해서 head 영역에 붙여넣는다.

이제 부트스트랩의 아이콘을 마음껏 사용할 차례다.

 

Icon Font를 유심히 보자

이제 아래와 같이 코드를 수정해보자

 

blog/templates/blog/single_post_page.html

함수를 통해 출력된 확장자를 변수로 하여 class 이름으로 지정하였다.

물론 모든 확장자에 맞지는 않기 때문에, 예외처리가 반드시 필요하다. (예시: zip 파일)

 

 


5. 템플릿 필터 사용하기

별건 아니고, 포스트 목록 페이지에서도 본문 내용 전체를 보여주는데,

본문이 엄청 길면 사용자가 목록을 한눈에 보기 어려울 것이다.

 

이를 위해 장고에서는 truncatewords 혹은 truncatechars를 사용하면 된다.

  • truncatewords: 문자열을 단어 수 기준으로 자른다
  • truncatechars: 문자열을 글자 수 기준으로 자른다.

우리는 truncatewords:45를 이용해 45개 단어만 출력하도록 설정할 것이다.

blog/templates/blog/index.html
본문 중 앞 45개의 단어만 출력함


'Django' 카테고리의 다른 글

다대일 관계 구현하기  (0) 2022.10.28
템플릿 모듈화 및 상속  (0) 2022.10.27
미디어 파일 관리하기  (0) 2022.10.27
부트스트랩과 정적 파일 적용하기  (0) 2022.10.27
장고 프로젝트에서 앱, 웹 페이지 개발하기  (0) 2022.10.26
    'Django' 카테고리의 다른 글
    • 다대일 관계 구현하기
    • 템플릿 모듈화 및 상속
    • 미디어 파일 관리하기
    • 부트스트랩과 정적 파일 적용하기
    JangGeonWu
    JangGeonWu

    티스토리툴바