現在Django 1.9を使用しています。私のモデルで 画像ファイルが Djangoメディアファイルのパスが正しくない、ディレクトリがありません
がしかし、画像は\メディアずにファイルパスを使用して表示されるようにしようとしているプロジェクト\メディアの\ FILEPATH.jpgに適切にアップロードされています。例えば、私は私のブラウザで私はlocalhost http://127.0.0.1:8000/media/FILEPATH.jpgに行くときDjangoのget要求が探しているので、私は404を得る:
プロジェクトの\ FILEPATH.jpg私はDjangoは奉仕するために取得するにはどうすればよい
私のメディアファイルは\ media \で正しく記録されますか?
詳しい情報には、任意の使用であってもよい場合:
settings.py:MEDIA_URL = '/media/' MEDIA_ROOT = os.path.dirname(os.path.join(BASE_DIR, 'media'))
モデル:私のようにurlpatterns後に次き
image = models.ImageField(upload_to='media', blank='true')
プロジェクトのurls.pyドキュメントごと:
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
ありがとうございました!
models.py
class Post(models.Model): ptype = models.ForeignKey('blog.Type', related_name='posts') title = models.CharField(max_length = 100) text = models.TextField() published_date = models.DateTimeField(default=timezone.now) def __str__(self): return self.title class Image(models.Model): post = models.ForeignKey('blog.Post', related_name='images') image = models.ImageField(upload_to='media', blank='true')
views.py
class Posts(generic.ListView): model = Post context_object_name = 'posts' template_name = 'blog/posts.html'
posts.html
{% extends "blog/base.html" %} {% block content %} {% for post in posts %} <p><a href = "{% url 'blog:postdetail' pk=post.pk %}">{{post.title}}</a></p> <p>{{post.text}}</p> {% for image in post.image_set.all %} <img src="{{ image.image.url }}"> {% endfor %} {% endfor %} {% endblock %}
htmlパーツを投稿してください。 'src'属性に' .url'を追加するのを忘れたのでしょうか?例: '
' –
hansTheFranz
@hansTheFranz質問にもっと多くのコンテキストを追加しました。応答を感謝します。 – dolanplz
'{post.image_set.all%}内の画像% 'のキーワード' image'がPythonを混乱させると思います。単に 'x'と呼んでいます。 '
'を使用すると、最初の 'image'はあなたが定義したモデルではない4つのループ変数を参照します。少なくとも、問題はそこにあると思う。フットループで 'image'を' x'に変更すると( 'src'部分にはありません)、forループを削除しないとどうなりますか? URLは正しいですか? –
hansTheFranz