2015-11-28 46 views
1

我是新Django的,我有一個問題,我希望你能幫助我解決。如何分配本地存儲到的ImageField場圖像,並在Django返回它的網址是什麼?

首先,我使用Django 1.8.3和Python 2.7.6上使用Apache和Postgres我的DBMS虛擬信封工作。

我有我的models.py文件以下模型:

class Hotel(models.Model): 
    # ... 
    name = models.TextField(blank=True, null=True) 
    img = models.ImageField(upload_to='images/',blank=True, null=True) 
    stars = models.IntegerField(blank=True, null=True) 
    # ... 

class Meta: 
    managed = False 
    db_table = 'hotel' 

我views.py文件看起來像這樣

from django.http import HttpResponse, Http404 
from webServices.models import Hotels 
from django.core import serializers 
from django.core.exceptions import ObjectDoesNotExist 
import json 
# ... 
def all_hotels(request): 
    hotels = Hotel.objects.values('name', 'img', 'stars') 
    data = json.dumps(list(hotels), indent = 4) 

    return HttpResponse(data, content_type='application/json') 

而且在settings.py文件是我MEDIA_URL和MEDIA_ROOT變量定義如下:

MEDIA_URL = '/media/' 

MEDIA_ROOT = '/path_to_my_projects_directory/media/' 

正如你所看到的,我的工作,返回了JSON的服務器上數據庫中每家酒店的數據。它當然可以正常工作。

的Json的IMG領域一直是「空」到現在爲止,我需要本地存儲到其酒店每圖像關聯,並在它返回它的URL。

的問題是我不知道怎麼辦。

這是很好的瞭解,以及該DB通過Python腳本,因爲數據駐留在谷歌電子表格更新(我會告訴你,如果問)。

我一直在尋找一整天我發現這個職位 how to manually assign imagefield in Django 和本文 http://www.revsys.com/blog/2014/dec/03/loading-django-files-from-code/,但我需要他們更具體一點。

回答

0

嗨,試試這個在您的views.py

from django.conf import settings 

url = request.scheme 
url += "://" 
url += request.META['HTTP_HOST'] 
url += settings.MEDIA_URL 
_len = len(hotels) 
_range = range(0, _len) 
hotels = Hotel.objects.values('name', 'img', 'stars') 
for x in _range: 
    hotels[x]['img'] = "%s%s" % (url, hotels[x]['img']) 

data = json.dumps(list(hotels), indent = 4) 
return HttpResponse(data, content_type='application/json') 
相關問題