※ Do it! 장고 + 부트스트랩 파이썬 웹 개발의 정석(이성용, 김태곤 / 이지스퍼블리싱) 책을 참고하여 프로젝트를 진행하고 있습니다.
프로젝트 진행과정을 기록하기 위해 작성하고 있으므로 책 저작권을 위해서 간단한 내용 외 자세한 코드와 내용은 작성하지 않습니다.
미디어 파일 저장하기
- 프로젝트파일/settings.py
도메인 뒤에 /media/라는 경로가 따라오면 미디어 파일을 사용하겠다는 의미
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, '_media')
- 프로젝트파일/urls.py
urls.py에서 media URL에 대한 설정을 추가해야 한다.
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- blog/models.py
from django.db import models
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)
- 대표 이미지 업로드
게시물에서 대표 사진을 저장하면 blog/images/%Y/%m/%d/ 위치에 저장된다. (현재 날짜 파일)
blank = True : 해당 필드는 필수 항목은 아니라는 의미
head_image = models.ImageField(upload_to='blog/images/%Y/%m/%d/', blank=True)
- 파일 업로드
게시물에서 미디어 파일을 저장하면 blog/files/%Y/%m/%d/ 위치에 저장된다. (현재 날짜 파일)
file_upload = models.FileField(upload_to='blog/files/%Y/%m/%d/', blank=True)


위의 사진을 보면 파일 선택한 후 저장하면 현재 날짜 파일에 이미지와 텍스트 파일이 저장된 모습을 확인할 수 있다.
포스트 목록 페이지에 대표 이미지 출력하기
- blog/templates/blog/post_list
{% for p in post_list %}
<!-- Blog post-->
<div class="card mb-4">
<img class="card-img-top" src="{{ p.head_image.url }}" alt="Card image cap" />

'Web > Django, Bootstrap' 카테고리의 다른 글
[Blog 만들기] #7 테스트 주도 개발(TDD; Test driven development) (0) | 2022.06.19 |
---|---|
[Blog 만들기] #6 IF문 사용하여 블로그 목록 페이지 오류 해결 (0) | 2022.04.10 |
[Blog 만들기] #4 FBV 방식, CBV 방식 (0) | 2022.04.05 |
[Blog 만들기] #3 장고 구조, 블로그 페이지 구성 (0) | 2022.04.04 |
[Blog 만들기] #2 부트스트랩 적용해보기 (0) | 2022.03.30 |
댓글