2013-07-27 60 views
0

我有一些模型用的FileField()看起來是這樣的:Django的圖像上傳目錄和模板處理

image = models.FileField(upload_to='/Users/john/projects/MyDjangoApp/foobars/images/') 

所以foobar的是MyDjangoApp一些模塊。 未來會出現另一個像barfoos這樣的模塊,它將擁有自己的圖像文件夾。

我不明白的是如何在模板中處理這個問題。 現在有立場是這樣的:

<td><img src="{{ foobar.image.url }}" height="350" width="350"></td> 

所以有架子的下面:

/Users/john/projects/MyDjangoApp/foobars/images/71RkbKwBxnL._SL1004_.jpg 

但必須是這樣的:

http://127.0.0.1:8000/foobars/images/71RkbKwBxnL._SL1004_.jpg 

所有URL模式我只找到處理這個問題如果託管在/ MyDjangoApp/static/images中的圖像,我希望處理/ MyDjangoApp/foobars/images和更高版本/ MyDjangoApp/barfoos/images中的文件。

何在Django中處理這個問題。

非常感謝您的時間!

回答

2

upload_to參數應該是相對於您的MEDIA_ROOT設置的路徑。您將用於訪問該文件的網址是附加到您的MEDIA_URL設置的相同路徑。

還檢查了文檔上FileFields and ImageFields並在MEDIA_ROOT and MEDIA_URL settings

+0

這就是正確的,但我會多MEDIA_ROOT並在此多MEDIA_URL設置,我怎麼能實現這一點。我的兩個「packeges」都有自己的MEDIA_ROOT路徑,這就是爲什麼模型中的upload_to是絕對路徑。 – user1644033

+0

現在我在模型中設置了以下內容:MEDIA_URL ='http://127.0.0.1:8000/'和MEDIA_ROOT ='/ Users/john/projects/MyDjangoApp /':image = models.ImageField(upload_to = 'foobars/images')我得到的文件url:http://127.0.0.1:8000/foobars/images/71bYTz3ti6L._SL1200_.jpg但404但圖像仍然存在上傳工作正常...感謝您的每一個幫助! – user1644033

+1

查看[這個問題](http://stackoverflow.com/questions/5517950/django-media-url-and-media-root)幫助你解決404錯誤。一般來說最好使用相對URL,所以'MEDIA_URL ='127.0.0.1:8000 /''變成'MEDIA_URL ='/''。 – knbk