目前使用的是Django 1.9。在我的模型 圖像文件被正確上傳至Django媒體文件路徑不正確,缺少目錄
項目\媒體\ FILEPATH.jpg
然而,圖像正試圖使用的文件路徑,而不\媒體顯示。例如,當我去我的本地http://127.0.0.1:8000/media/FILEPATH.jpg在瀏覽器中,我得到了404,因爲Django的GET請求尋找:
項目\ FILEPATH.jpg
如何讓Django的服務我的媒體文件正確使用\ media \?
詳細信息,如果它可以是任何用途:
settings.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.dirname(os.path.join(BASE_DIR, 'media'))
型號:
image = models.ImageField(upload_to='media', blank='true')
項目urls.py我已在URL模式爲繼每份文件:
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
我可以想象,{%for image in post.image_set.all%}中的關鍵字'image'可能會讓Python感到困惑,我簡單地稱之爲'x'。當你使用''時,第一個'image'指的是四個循環變量,而不是你定義的模型。或者至少我認爲問題可能在那裏。如果在腳循環中將'image'更改爲'x',會發生什麼情況(只有'src'部分沒有),以及在不刪除for循環時會發生什麼?網址是否正確? – hansTheFranz