📢 공지사항
home

Media

번호
21
비고
15:33
주차
5월 셋째주
확인
웹 통신 방식 : "url"
settings.py 맨 아래에 다음 코드 추가
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 이용자가 업로드한 파일을 모으는 곳 MEDIA_URL = '/media/' # 이용자에게 업로드한 파일을 보여줄 때 url의 구성요소
Python
복사
urls.py 에 다음 코드 추가
from django.conf import settings from django.conf.urls.static import static + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # urlpatterns ] 끝에 추가
Python
복사
static 을 병렬적으로 더해주는 형식으로 뒤에 붙임 → 개발 후 재사용...! 미디어 복붙
(내부적인 기능은 F12 누르면 어케어케 가긴 하는데 너무 복잡)
models.py 에 다음 코드 class 안에 추가
image = models.ImageField(upload_to = "blog/", blank = True, null = True)
Python
복사
upload_to 는 업로드할 폴더를 지정하는 것
settings.py 에 MEDIA_URL 로 지정해둔 media 폴더 안에 blog 폴더를 만들어서 관리하겠다는 설정
blank 와 null 같은 경우가 있을 수 있다고 미리 표시해 둠 ... 안하면 장고가 짜증냄
대대적인 기존 데이터 삭제
blog/migrations 에서 0001_initial 삭제,
blog/migrations/__pycache__ 에서 0001_initial.cpython-39 삭제
db.sqlite3 파일 삭제
image 사용 시에 무조건 pillow 있어야 함
터미널에 pip install pillow 해서 pillow 다운 받음
터미널에 python manage.py makemigrations 입력하면 지웠던 파일 다시 생성
python manage.py migrate 입력
...
runserver 하면 데이터 깔끔하게 지워진 것 볼 수 있음
db.sqlite3 지우면 superuser 정보도 다 날라가서 다시 설정해야 함
python manage.py createsuperuser Username: nostalgia Email address: jyj4419@gmail.com Password: Password (again): Superuser created successfully.
/admin 으로 가서 로그인 후 Blog 입장하고 ADD BLOG 누르면
admin 패널을 통해서 Image column 이 데이터베이스에 잘 적용되었음을 확인 가능

데이터베이스를 통해서 웹페이지에도 사진 업로드하는 기능 구현

new.html 에 들어가서
작성자와 본문 사이에 <p>사진: <input type="file" name="image"></p> 추가하고
form action 에 enctype="multipart/form-data" 를 추가
views.py 에 들어가서
def create 에 new_blog.image = request.FILES['image'] 추가
detail.html 에 들어가서
<p><img src="{{blog.image.url}}" alt=""></p> 추가
runserver 해서 write 로 글쓰고 파일 첨부해보면 됨!
detail 에서 오류 나면 ...
<!-- {% if blog.image %} -->
<p><img src="{{blog.image.url}}" alt=""></p>
<!-- {% endif %} -->
와 같이 만들어 보자