2012-03-01 5 views
0

미디어 루트에서 서비스를 제공하려고 할 때이 깨진 이미지가 나타납니다. 친절하게도 나에게 문서 또는 이전 질문에 대한 링크를 표시하지 않기를 요청합니다. 나는 그런 것들을 시도했지만 아직도 깨진 이미지를 얻고 있습니다.개발 환경에서 정적 이미지 검색

Models.py :

class BasicModel(models.Model): 
    name = models.CharField(max_length=200) 
    dob = models.DateField() 
    photo = models.ImageField(upload_to='sample') 

class BasicModelForm(ModelForm): 
    class Meta: 
      model = BasicModel 

Views.py :

def BasicView(request): 
    if request.method == 'POST': 
      form = BasicModelForm(request.POST, request.FILES) 
      if form.is_valid(): 
        data = form.save() 
        return preview(request, data.id) 
    else: 
      form = BasicModelForm() 
    return render_to_response("unnamed.html", {'form': form}, context_instance=RequestContext(request)) 

def preview(request, id): 
    obj = get_object_or_404(BasicModel, pk=id) 
    return render_to_response("preview.html", {'obj': obj}) 

Settings.py :

MEDIA_ROOT = '/home/nirmal/try/files/' 
MEDIA_URL = 'http://localhost:8000/files/' 

Urls.py :

url(r'^unnamed/$', 'unnamed.views.BasicView'), 
url(r'^files/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 

Preview.html :

아무도 도와 줄 수 없습니까?

감사합니다.

답변

2

바꾸기 :

{{ MEDIA_URL }}sample/{{ obj.photo }} 

으로 : 보조 노트로

{{ object.photo.url }} 

, 당신은 {{MEDIA_URL}}도 템플릿에 정의되어 있는지 확인입니까?

+0

그래도 정의됩니다. Btw 고마워. 지금 일하고있어. – rnk

+0

왜 첫 번째 구문이 잘못 되었습니까? 둘 다 동일한 URL을 제공합니다. http : // localhost : 8000/files/sample/qlimp.jpg – rnk

+0

이것은 ipdb의 작업입니다. pip install ipdb를 실행하십시오. 그런 다음보기에서 "import ipdb; ipdb.set_trace()"를 입력하십시오. 여기서 "form.instance.photo.url"또는 "django.conf.settings에서 가져 오기 MEDIA_URL; MEDIA_URL + form.instance.photo"를 입력하고 결과를 비교할 수 있습니다. 의견은 정교하게 요약하지만 디버깅에 대한 기사는 http://blog.yourlabs.org/debugging-python-and-django-code – jpic

1

ImageField 표현이 MEDIA_URL에 상대적인 URL을 반환한다는 것을 기억해야합니다. ,

<html> 
<body> 
{{ obj.name }} 
{{ obj.dob }} 
<img src="{{ obj.photo.url }}" /> 
</body> 
</html> 

힌트 브라우저에서 깨진 이미지의 URL을 조회 :

<html> 
<body> 
{{ obj.name }} 
{{ obj.dob }} 
<img src="{{ MEDIA_URL }}{{ obj.photo }}" /> 
</body> 
</html> 

심지어 짧은이와 절대 URL 경로를 사용 : 어떤 당신이 당신의 템플릿에 다음 코드를 사용한다는 뜻 . 나는 그것이 http://localhost:8000/files/sample/sample/xyz.png과 같은 것 같아요.

+0

고마워. 두 번째 스 니펫이 작동 중입니다! – rnk

관련 문제