2번째 줄: |
2번째 줄: |
| 장고에서 이미지를 다루는 것과 관련한 문서. | | 장고에서 이미지를 다루는 것과 관련한 문서. |
| | | |
| + | 사진을 올리고 관리하기 위해선 모델을 하나 만들어 개별적인 관리가 필요하다. |
| + | |
| + | 이미지 사용은 두가지 개념이 있다. 관리자가 static 디렉터리 안에 두고 사용하는 이미지와 사용자들이 올리는 이미지.(media) |
| === 사전 준비 === | | === 사전 준비 === |
| | | |
7번째 줄: |
10번째 줄: |
| pip install pillow : 이미지를 관리해주는 라이브러리. | | pip install pillow : 이미지를 관리해주는 라이브러리. |
| | | |
| + | 모델을 반영하기 위해 makemigrations를 실행하면 에러가 뜬다. HINT로 pillow를 설치하라는 메시지가 뜬다. 메시지 그대로 <code>python -m pip install Pillow</code>를 입력하자. |
| + | ====업로드 폴더 설정==== |
| + | settings.py에 MEDIA_ROOT를 다음과 같이 설정한다.(기본설정이 없기 때문에 새로 써주어야 한다.)<syntaxhighlight lang="python"> |
| + | MEDIA_URL='/media/' #미디어 파일을 불러올 때 사용할 가상 url을 설정한다. |
| + | |
| + | MEDIA_ROOT=BASE_DIR / 'media' #기본프로젝트 하위의 media에서 모든 업로드 매체를 관리한다. |
| + | #media 하위에 앱이름으로 디렉터리를 만들고 파일을 업로드하게 된다. |
| + | </syntaxhighlight>유저가 업로드한 파일이 모두 여기에서 관리된다. |
| == 방법 == | | == 방법 == |
| {| class="wikitable" | | {| class="wikitable" |
12번째 줄: |
23번째 줄: |
| !설명 | | !설명 |
| !방법 | | !방법 |
| + | |- |
| + | |모델 생성 |
| + | |이미지를 저장할 모델과 칼럼을 생성해준다. |
| + | /앱/models.py 안에 작성한다. |
| + | |
| + | |
| + | upload_to는 저장할 경로를 정하는 것. 경로는 연도, 월, 일자로 구분하는데, 하나의 디렉터리에 관리하는 것보다 찾는 속도가 빠르다. 그리고 파일의 내용에 대해 유추하기도 어렵다. |
| + | |
| + | 저장경로는 f'경로/%Y/{변수}' 형태로 지정해 넣을 수도 있다. |
| + | |
| + | default는 이미지 업로드가 되어있지 않을 때 사용할 것을 의미한다. |
| + | |
| + | default 는 해당 미디어를 찾지 못했을 때 나타내 보여줄 것. |
| + | |<syntaxhighlight lang="python"> |
| + | class 모델명(models.Model): |
| + | ... |
| + | upload_to='images/%Y/%m/%d', default='images/no_image.png' |
| + | ... |
| + | </syntaxhighlight> |
| |- | | |- |
| |이미지 올리기 | | |이미지 올리기 |
| |HTML의 폼을 이용해 올린다. | | |HTML의 폼을 이용해 올린다. |
| + | 미디어를 올릴 땐 enctype를 명시해주어야 한다. |
| |<syntaxhighlight lang="html+django"> | | |<syntaxhighlight lang="html+django"> |
| <form action="{% url '앱:경로' %} " method="post" enctype="multipart/form-data"> | | <form action="{% url '앱:경로' %} " method="post" enctype="multipart/form-data"> |
39번째 줄: |
70번째 줄: |
| | | | | |
| |} | | |} |
− | [[분류:5. 장고 미디어]] | + | [[분류:장고 이미지]] |