2017-08-08 112 views
1

目前使用的是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 %} 
+0

發佈html部分。難道你忘了給'src'屬性添加'.url'?例如:'' – hansTheFranz

+0

@hansTheFranz我爲這個問題添加了更多的上下文。欣賞迴應。 – dolanplz

+0

我可以想象,{%for image in post.image_set.all%}中的關鍵字'image'可能會讓Python感到困惑,我簡單地稱之爲'x'。當你使用''時,第一個'image'指的是四個循環變量,而不是你定義的模型。或者至少我認爲問題可能在那裏。如果在腳循環中將'image'更改爲'x',會發生什麼情況(只有'src'部分沒有),以及在不刪除for循環時會發生什麼?網址是否正確? – hansTheFranz

回答

0

當你的聲明對模型中的上傳,Django的檢測自動顯示你的路線的媒體是BASE_DIR /媒體,當你把東西放在upload_to模型上你聲明這個圖像必須保存在BASE_DIR /媒體/東西

例如:如果我想保存用戶的圖像到媒體中,我必須使得這一模型

image = models.ImageField(upload_to='users/', blank='true') 

和我的形象將保存在本地主機/媒體/用戶/ FILEPATH.jpg

後,所有這個網址媒體/保存在您的「形象」的領域讓你像場會說只是'users/FILEPATH.jpg',而不是本地主機/媒體/

這就是爲什麼你需要寫/媒體/在你SRC

<img src="/media/{{ image.image }}"> 

,如果你保存在名爲「圖像」字段中的圖像您將不需要的.url。

試試吧。

+0

我明白你的意思了。 upload_to屬性已經識別出媒體的位置,這就是爲什麼我找不到我的路徑,因爲它正在搜索/媒體/媒體。我已經改變了我的upload_to以包含更有意義的子目錄。感謝您的幫助!!!! – dolanplz