문제

이미지 갤러리가 필요한 사이트 용 Django 앱을 작업 중입니다. 사이트는 상당히 간단하기 때문에 데이터베이스를 사용하지 않기로 선택했습니다. 갤러리 부분에는 이미지 폴더에서 모든 이미지 파일을 읽고 템플릿으로 보내는 루프 내부에서 렌더링됩니다.

import os
from django.shortcuts import render_to_response

def show_pics(request):
    """sends a list of files to the view"""
    folder = '/static/images'
    files = [os.path.join(folder, f) for f in os.listdir(folder) if '.jpg' in f]
    return render_to_response('gallery.html', { 'files' : files })

그리고 템플릿 :

<div id="gallery">
    {% for file in files %}
        <img src="{{ file }}" class="gallery-image" />
    {% endfor %}
</div>

이것은 개발 모드에서 훌륭하게 작동하지만 ( '/static/'에서 정적 파일을 제공하기 위해 URL을 설정 함) 웹 서버에 업로드하면 이미지가 렌더링되지 않습니다. 렌더링 된 HTML을 보면 이것이 내가 얻는 것입니다.

<div id="gallery">  </div>

정적 URL을 통해 임의의 사진에 액세스하여 웹 서버에서 정적 URL이 작동하는지 확인했습니다. http://mysite.com/static/images/some_image.jpg, 그리고 CSS는 확실히 작동합니다 (걱정하지 마십시오. 나중에 정적 파일에 별도의 서버를 사용하겠습니다). 제작 서버가 Python2.5를 실행하는 반면 2.6을 실행하고 있다고 말해야합니다 (둘 다 Django 1.1이 있습니다). 이견있는 사람?

도움이 되었습니까?

해결책

가정하는 것이 안전합니다 files 템플릿에서 비어 있습니다. 당신은 그것을 넣어 이것을 확인할 수 있습니다 {{ files }} 템플릿에서 인쇄 한 내용을 확인하십시오. 아마도 아무것도 아닙니다.

그러나 여기에는 몇 가지 문제가 있습니다.

folder = '/static/images'
files = [os.path.join(folder, f) for f in os.listdir(folder) if '.jpg' in f]

첫째, os.listdir가 취하는 경로는 문서 루트의 경로가 아니라 파일 시스템 루트의 경로입니다. 그래서 당신이 그렇게한다면 ls /static/images 서버에서 무엇을 보여 주나요?

그리고 사소한 것은 사용하는 것을 선호합니다 f.endswith('.jpg')

다른 팁

원인은 파일 목록이 비어 있기 때문입니다. Django 앱에서 /static /images 폴더에 액세스 할 수 있는지 확인 했습니까?

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