2012-12-16 2 views
6

내 장고 응용 프로그램에서 사용자가 업로드 된 파일을 제공하는 몇 가지 문제가 있어요 업로드 user_res/그림/폴더. 프로젝트의 settings.py에서장고가 제공하는 사용자는 이미지

는 :

MEDIA_ROOT = 'user_res' 

MEDIA_URL = '/user_res/' 

STATIC_ROOT = '' 

STATIC_URL = '/static/' 

내가 정적 자원 (즉, CSS 또는 JS 파일)를 참조하려고 할 때마다, 모든

그러나
http://localhost:8000/static/<subfolder>/main.css. 

과 같은 URL을 사용하여 잘 작동 사용자 업로드 파일에 액세스 할 수 없습니다.이 파일은 user_res/pictures 폴더의 상대적 URL (예 :

user_res/pictures/test.jpg 
)과 함께 생성됩니다.

URL을 동적으로 호출 장고 사진 모델에서 코드 줄에 생성됩니다

return '<img src="{}"/>'.format(self.content.url) 

내가 url.py 파일에 정적 또는 미디어 파일 중 하나를위한 전용의 URL-의이 없습니다.

누군가 장고를 미디어 파일로 제공하는 방법에 대한 아이디어가 있습니까? 실제 환경에서는 http 서버가 특정 디렉토리를 제공하도록 구성해야하지만 현재는 경량 개발 스위트를 유지하려고합니다.

감사합니다.

+1

이와같이 http://stackoverflow.com/a/2040098/630877? – arie

답변

0

나는 url 속성은 상대 URL (Django's FileField documentation)를 반환 생각, 그래서 당신은이 있어야합니다

return '<img src="{}"/>'.format(MEDIA_URL + self.content.url) 

상대 URL은 사용자가 방문으로 작동하지 않습니다에 "http : // localhost를/도서 /" "http : //localhost/books/user_res/pictures/test.jpg"를 요청할 것입니다.

4

아래와 같이 urls.py 파일을 편집하십시오. 당신의 프로젝트의 settings.py

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

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

편집보고 싶은 :

#Rest of the settings 
MEDIA_URL = '/media/' 
MEDIA_ROOT = 'media' 
STATIC_ROOT = '' 
STATIC_URL = '/static/' 

신중하게 사용자가 업로드 파일을 제공에 대한 공식 장고 설명서를 읽어 보시기 바랍니다. 문서에 대한 링크 : https://docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user

관련 문제