문제

나는 a를 설정했다 장고 이미지를 사용하는 응용 프로그램. 미디어 설정 Media_Root 및 Media_URL을 올바르게 설정했다고 생각합니다. 그러나 이미지가 나타나지 않습니다. 문제가 무엇인지 아십니까?

이 예를 고려해 보자 :

이미지 파일이 아래에 있습니다 /홈/www/미디어/앱/사진 그리고 우리는 요청하려고합니다 http://example.com/photos/123.jpg

이 설정을 사용해야합니까?

MEDIA\_ROOT = /home/www/media

MEDIA_URL = http://example.com/app

업데이트: 내장 개발 서버를 사용하고 있다고 언급하는 것을 잊었습니다.

도움이 되었습니까?

해결책

Django의 정적 콘텐츠를 제공합니다 낙담 개발자 자체로부터 (내가 틀리지 않은 경우 디버그 모드에있을 때만 작동합니다). 대신 전용 웹 서버를 사용해야합니다.

어쨌든 그렇게해야한다면 문서를 읽으십시오. 정적 파일을 제공하는 방법.

다른 팁

개발 전용

이를 수행하여 개발 서버와 함께 사용할 정적 미디어 서버를 설정할 수 있습니다. urls.py 파일. 강제 디버그 조건부와 함께 사용 방법을 보여주는 코드를 첨부했습니다.)

from django.conf import settings
from django.conf.urls.defaults import *      

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('', 
    (r'^$', 'views.index'),            

    # Accounts
    (r'^accounts/login/$', 'views.user_login'),
    (r'^accounts/logout/$', 'views.user_logout'),

    # Contrib Modules
    (r'^admin/(.*)', admin.site.root),
)

if settings.DEBUG :
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    )

나는 내 MEDIA_ROOT HTML/미디어의 하위 디렉토리에서 settings.py

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'html/media/').replace('\\','/')

개발이 완료된 후 프로젝트는 정적 미디어 파일을 제공하는 웹 서버에 배치됩니다. 아파치 지침 사용.

이것은 이미지 필드로 이미지 파일을 보여주는 올바른 방법입니다. 사용자 프로필 사진이 있다고 상상해보십시오.

Models.py :

UserProfile:
    profilePic= models.ImageField( upload_to='PATH_TO_UPLOAD', blank=True, null=True)

settings.py :

MEDIA_ROOT = 'FULL_PATH_OF_MEDIA'
MEDIA_URL = 'URL_OF_MEDIA'

urls.py :

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

Path_to_upload는 사용자 업로드 데이터가 진행되는 경로입니다. 이것은 full_path_of_media의 하위 디렉토리입니다. 즉, 업로드 된 파일에

FULL_PATH_OF_MEDIA/PATH_TO_UPLOAD 

전체 경로.이 컨텐츠는이 URL에서 액세스 할 수 있습니다.

SITE_NAME/URL_OF_MEDIA/PATH_TO_UPLOAD

나는 또한 이것을 읽는 것이 좋습니다 static_files vs media_files

문서

Django 404 페이지를 받고 있다고 생각합니다. 이미지 중 하나에 직접 액세스하고 그것이 일어나고 있는지 확인하십시오.

그렇다면 웹 서버를 ~ 아니다 미디어 계층 내에서 요청을 Django로 보내지 않고 대신 직접 제공하십시오. 다음은 내 Apache Conf 파일의 저격입니다. 첫 번째 섹션은 Apache에게 모든 것을 Django로 보내라고 지시합니다. 두 번째 섹션에는 "Sethandler None"이 있으며 "정상적인 방식으로 /미디어를 다루는 것"이라고 표시됩니다.

보다 http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ 모든 흥미로운 세부 사항에 대해.

princeofpinot.com (일명 팝) 용 부분 httpd.conf 파일 :

<Location "/">
    SetHandler python-program
    PythonAutoReload Off
    PythonDebug Off
    PythonPath "['/var/www/production/pop', '/usr/local/lib/python2.5/site-packages/django'] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE settings
    PythonHandler django.core.handlers.modpython
</Location>

<Location "/media">
    SetHandler None
    AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
</Location>

원래 질문은 Dev 서버와 관련이 있지만 생산 환경을 찾고있는 다른 사람에게는 답변입니다.

https://docs.djangoproject.com/en/1.8/howto/static-files/deployment/ 프로덕션 환경에서 Django가 파일을 제공하는 방법에 대한 안내서를 제공합니다. 가이드의 톤에서 파일을 처리하거나 Apache와 함께 mod_wsgi를 사용하는 별도의 웹 서버를 갖는 것이 가장 좋다는 것을 암시하는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top