我是 Django 的新手,我有一个问题希望你能帮我解决。
首先,我在使用 Apache 和 Postgres 作为我的 DBMS 的虚拟环境中使用 Django 1.8.3 和 Python 2.7.6。
我的 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 字段一直为 'null' 直到现在我需要将本地存储的每张图片与其酒店相关联并在其中返回其 URL。
问题是我不知道怎么做。
很高兴知道数据库是通过 python 脚本更新的,因为数据驻留在 Google SpreadSheet 中(如果需要,我会向您展示)。
我找了一整天,终于找到了这篇文章 how to manually assign imagefield in Django 和这篇文章 http://www.revsys.com/blog/2014/dec/03/loading-django-files-from-code/ ,但我需要它们更具体一些。
最佳答案
嗨,在你的 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')
关于python - 如何将本地存储的图像分配给 ImageField 字段并在 Django 中返回其 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977072/