2017-05-25 31 views
0

我的模型:Django的圖片上傳而非相對

class MedicineType(models.Model): 
    name = models.CharField(max_length=100) 
    image = models.ImageField(upload_to='images/', max_length=255, null=True) 

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 

現在,當我從瀏覽器上傳圖片,網址該圖像將作爲絕對路徑存儲在數據庫中。例如,名爲'example.png'的圖像將具有

http://localhost:8000/media/images/example.png 

但我希望只有相對路徑將被存儲在數據庫中。不與本地主機和端口。我怎麼做?

回答

1

你怎麼做什麼?

是什麼讓你覺得Django在你的數據庫中存儲http://localhost:8000/media/images/example.png?如果這是django所做的,那麼通過更改端口python manage runserver 8010意味着所有上傳的內容都會中斷?

不,這不是Django所做的。見this from the documentation

>>> car = Car.objects.get(name="57 Chevy") 
>>> car.photo 
<ImageFieldFile: chevy.jpg> 
>>> car.photo.name 
'cars/chevy.jpg' 
>>> car.photo.path 
'/media/cars/chevy.jpg' 
>>> car.photo.url 
'http://media.example.com/cars/chevy.jpg' 

以上應該足夠解釋正在發生的事情。查看以上鍊接瞭解更多詳情。

car.photo.nameIS什麼Django的存儲在數據庫中。 car.photo.urlcare.photo.path然後是你認爲被存儲在數據庫中。

+0

我用get請求獲取json格式的數據。我看到圖像url正在以這種方式保存。 –

+0

你是對的雷克斯福德。它以這種方式工作。 –