페이지 구성 개선하기
Posted on 2021-08-25 by GKSRUDTN99
Django로 웹사이트 만들기
장고
템플릿 파일에서 if문 사용하기
템플릿 파일에서의 if-else문
{% if %}
로 시작해서{% eneif %}
로 끝낸다.
{% elif %}
나{% else %}
도 사용할 수 있다.
✔︎ <img>
태그에서 alt 속성은, 이미지를 보여줄 수 없을 때 이미지 대신 나타나게 하는 텍스트를 의미한다.
임의의 이미지 표시하기
https://picsum.photos/가로/세로
<img>
태그의 src 속성에 위 링크를 입력하면 url로 전달한 크기의 무작위 이미지를 가져온다.
https://picsum.photos/seed/id값/가로/세로
위의 링크를 이용하면 항상 같은 이미지를 가져올 수 있다.
첨부 파일 다운로드 버튼 만들기
<a href="{{ post.file_upload.url }}" class="btn btn-outline-dark" role="button" download>Download</a>
위와 같이 입력하여 다운로드 할 수 있는 버튼을 만들 수 있다.
a 태그 안에 download를 명시하는 것에 주목!
첨부 파일명과 확장자 아이콘 나타내기
Post 모델에 파일명과 확장자를 얻어오는 함수를 정의한다.
os 모듈을 이용하므로 import하자!
# blog/models.py
from django.db import models
import os
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
head_image = models.ImageField(upload_to='blog/images/%Y/%m/%d', blank=True)
file_upload = models.FileField(upload_to='blog/files/%Y/%m/%d', blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# author : 추후 작성 예정
def __str__(self):
return f'[{self.pk}]{self.title}'
def get_absolute_url(self):
return f'/blog/{self.pk}/'
def get_file_name(self):
return os.path.basename(self.file_upload.name)
def get_file_ext(self):
return self.get_file_name().split('.')[-1]
템플릿 필터 사용하기
truncatewords
혹은truncatechars
를 사용한다.
전자는 문자열을 단어 수 기준으로 자르고, 후자는 문자열을 글자 수 기준으로 자른다.
아래와 같은 방식으로 활용 가능하다.
<p class="card-text">{{ p.content | truncatewords:45 }}</p>