2017-05-25 14 views
0

マイモデル:settings.pyDjangoの画像データベースの絶対パスでアップロードむしろより相対

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

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

さて、私は、ブラウザからのURLを画像をアップロードしないときイメージは絶対パスとしてデータベースに格納されています。たとえば、「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.urlまたはcare.photo.pathとなり、はデータベースに保存されています。

+0

私はjson形式でデータを取得するためにget要求を使用しました。私はイメージURLがそのように救われているのを見ました。 –

+0

あなたは正しいrexfordです。それはそのように働く。 –

関連する問題