python - 如何将本地存储的图像分配给 ImageField 字段并在 Django 中返回其 URL?

标签 python json django postgresql

我是 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/

相关文章:

python - pandas:将两列以上映射到一列

json - 如何在flutter中将json格式的模型对象列表发送到API

java - 无法构造 `class name` 的实例(尽管至少在 Creator 上存在)

javascript - 如何在 TypeScript 中将 JSON 对象转换为另一个对象

python - Wagtail 将 sqlite 移动到 postgres 数据库

python - 为什么 any() 方法没有返回我认为应该返回的值?

python - 每 12 个值计算中位数

python模态逻辑K求解器

python - 在 Django Rest 框架分页中添加新值

python - 如何在redis缓存中使用django-redis hset操作