장고를 이용해 개인 블로그를 만들어 보던 중, http://www.bogotobogo.co

 
DongHyeok Lee

장고를 이용해 개인 블로그를 만들어 보던 중,
http://www.bogotobogo.com/python/Django/Python_Django_Image_Files_Uploading_Example.php
이 사이트를 참조했습니다.

그런데 미디어 파일에 대한 파일 접근이 이상하게 잡히네요 ㅠㅠ

settings.py
STATIC_URL = ‘/static/’
MEDIA_URL = ‘/media/’
STATICFILES_DIRS = (os.path.join(‘static’), os.path.join(‘media’))
이런식으로 잡아뒀습니다.
그리고

models.py

class Atricle(models.Model):
….
imgs = models.FileField(upload_to=’media/imgs/%y/%m/%d’, blank=True)

이런식으로 잡았구요.

그래서 어드민에서 이미지 파일을 업로드하고서 리스트를 불러오려고했습니다.

views.py 에서 해당 이미지 오브젝트를 전부 불러왔씁니다.

list.html

{% for each in list_data %}

{% endfor %}

그런데 해당 이미지의 주소값이
media/media/imgs/16/03/25/sss.jpg

이런식으로 잡힙니다 ㅠㅠ
어떤 부분이 잘 못되었나요?

2. 추가로
static 파일들에 대한 접근은 하는데, 미디어 폴더의 접근은 어떻게 해야하나요? 단순하게 static 폴더 접근하는 것 처럼 생각해서 테스트 해봤는데 계속 media 폴더 내에 있는 파일들은 404라고 하네요….

접근 방법이 따로 있나요?

  • Chinseok Lee

    media 파일에 대한 설정은 MEDIA_URL 와 MEDIA_ROOT 를 설정해주셔야 합니다. 예로서
    settings.MEDIA_URL = ‘/media/’
    settings.MEDIA_ROOT = os.path.join(BASE_DIR, ‘media’)
    이구요.

    모델필드에서는 upload_to 에 media 를 써주실 필요는 없을 듯 합니다.

    Post 모델의 photo 필드라고 하면,

    post.photo.url 로서 이미지 url 을 획득할 수 있구요.
    post.photo.path 로서 이미지에 대한 로컬 경로를 획득할 수 있습니다. // AskDjango

    Chinseok Lee

    그리고, 개발서버에서 staticfiles 에 대한 서빙처리를 해주지만, media 파일에 대해서는 해주지 않습니다. 아래 코드를 프로젝트/urls.py 에 추가해서 적용하실 수 있겠습니다.

    from django.conf import settings
    from django.conf.urls.static import static

    # urlpatterns 중략

    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    # 참고 : https://docs.djangoproject.com/es/1.9/howto/static-files/ AskDjango

    Chinseok Lee

    아 그리고 settings.STATICFILES_DIRS 에는 MEDIA 경로를 잡으실 필요가 없습니다. static 과 media 는 서로 용도가 다릅니다. 🙂

Advertisements