2012-03-01 2 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:

<html> 
<body> 
{{ obj.name }} 
{{ obj.dob }} 
<img src="{{ MEDIA_URL }}sample/{{ obj.photo }}" /> 
</body> 
</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="{{ MEDIA_URL }}{{ obj.photo }}" /> 
</body> 
</html> 

あるいは短い、と絶対URLパスを使用します。

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

ヒント、お使いのブラウザで壊れた画像のURLを検索。私はそれがhttp://localhost:8000/files/sample/sample/xyz.pngのようなものだと思います。

+0

ありがとう。 2番目のスニペットが機能しています! – rnk