我正在构建人口代码,用来自Google Places API的图像填充Django模型“City”。
这是模型:
class City(models.Model):
city_image = models.ImageField(blank=True, upload_to='city_pictures')
我构建了返回照片的API URL:
#fetch image from this url
city_image_url = ('https://maps.googleapis.com/maps/api/place/photo'
'?maxwidth=%s'
'&photoreference=%s'
'&key=%s') % (maxwidth, city_image_ref, GoogleKey)
谷歌说回复是一张照片,我在Postman上测试过,所以我想这样做:
with urllib.request.urlopen(city_image_url) as response:
city_image = response
created_city = City.objects.get_or_create(city_id=city_id)[0]
created_city.city_image = city_image
#plus other fields
但我收到这个错误:
回溯(最近的最后一次调用):文件"C:\User\bnbih\Djangos\excurj_proj\population_script.py",第68行,填充()文件"C:\User\bnbih\Djangos\excurj_proj\population_script.py",第64行,填充created_city.save()文件"C:\用户\bnbih\AppData\本地\程序\Python\Python36-32\lib\site-包\django\db\模型\base.py",第796行,保存force_update=force_update,update_fields=update_fields)文件"C:\用户\bnbih\AppData\本地\程序\Python\Python36-32\lib\site-包\django\db\模型\base.py",第824行,save_base更新=自己。_save_table(原始、cls、force_insert、force_update、使用、update_fields)文件"C:\用户\bnbih\AppData\本地\程序\Python\Python36-32\lib\site-包\django\db\模型\base.py",non_pks]文件"C:\用户\bnbih\AppData\本地\程序\Python\Python36-32\lib\站点包\django\db\模型\base.py",第886行,用于non_pks中的f]文件"C:\用户\bnbih\AppData\本地\程序\Python\Python36-32\lib\站点包\django\db\模型\字段\files.py",第290行,pre_saveif文件而不是文件。_committed:属性错误:'HTTP响应'对象没有属性'_committed'
我正在使用Python 3和Django 1.10
在遵循上述答案和本教程之后
这让我可以将Google Places图片保存到ImageField:
首先,准备HTTP响应为图像的URL:
city_image_url = ('https://maps.googleapis.com/maps/api/place/photo'
'?maxwidth=%s'
'&photoreference=%s'
'&key=%s') % (maxwidth, city_image_ref, GoogleKey)
其次,检索实际图像并将其保存到变量:
retrieved_image = requests.get(city_image_url)
第三,在本地创建一个文件并将远程图像的内容写入其中:
with open(city_names[i] + '.jpg', 'wb') as f:
f.write(retrieved_image.content)
第四,打开包含图像的文件,并将其转换为Django文件:
reopen = open(city_names[i] + '.jpg', 'rb')
django_file = File(reopen)
第五,创建一个模型对象并将django文件保存在ImageField中,如下所示:
created_city = City.objects.get_or_create(city_id=city_id)[0]
#save it to the ImageField -> args are: 1. the name of the file that is to be saved in MEDIA_ROOT path 2. The Django file itself 3. save instance
created_city.city_image.save(city_names[i] + '.jpg', django_file, save=True)
created_city.save()
最后,这些是您需要的导入:
from django.core.files import File
import requests
试试这个:
from django.core.files import File
from django.core.files.temp import NamedTemporaryFile
city_image = NamedTemporaryFile(delete=True)
city_image.write(urllib2.urlopen(url).read())
city_image.flush()
created_city = City.objects.get_or_create(city_id=city_id)[0]
created_city.city_image = city_image
问题内容: 好的,我已经尝试了几乎所有内容,但无法正常工作。 我有一个上面带有ImageField的Django模型 我有通过HTTP下载图像的代码(已测试并且可以工作) 图像直接保存到“ upload_to”文件夹中(upload_to是在ImageField上设置的文件夹) 我需要做的就是将已经存在的图像文件路径与ImageField相关联 我已经用6种不同的方式编写了这段代码。 我遇到的问题
问题内容: 我有一个UIImageView,它允许用户放置并保存图像,直到可以保存为止。问题是,我不知道如何实际保存和检索放置在视图中的图像。 我已经将图像检索并放置在UIImageView中,如下所示: 它在我的UIImageView中显示选定的图像就很好了,但是我不知道如何保存它。我将视图的所有其他部分(主要是UITextfield)保存在Core Data中。我已经搜索了很多,然后尝试了很多
如何添加图像并将其设置为我的应用程序背景 我知道你把你想要的图片粘贴到了drawable文件夹中。这是代码本身的问题,还是我应该创建一个RelativeLayout?或者仅仅是提供的代码中的一行更改? 这是我的代码,没有任何改动。
问题内容: 基本上,我想做的是允许用户自己制作folder,然后转到activity包含的button来启动camera。 从这里我希望能够启动camera并将camera图像保存到新创建的文件夹中。 我在将camera图像保存到新创建的文件夹的最后一部分时遇到麻烦。 这是我的Code: 从这里我过渡到此活动: public class Press extends Activity { 请告诉我如
问题内容: 我有这样的JavaScript代码 我的PHP代码是这样的 执行此代码时,我得到了一个零尺寸的png文件图像?我的代码有什么问题? 问题答案: 我最近不得不自己做。 首先,我将canvasData放入一个隐藏字段中,并将其发布到我的PHP页面中。 它以以下格式返回: 您需要首先拆分数据,因为这是标题信息。其余的是编码数据。 然后,在服务器上创建映像: 然后阅读以完成我想做的事情。 我非
我正在开发一个Android应用程序,在某个时候我必须拍摄一张照片并将其保存到图库中。相机将打开并拍摄照片,但不会将其保存到多媒体资料中。这是我的密码: 布局: 有人能帮帮我吗?我已经搜索了其他类似的问题,但都没有帮助我。感谢大家,祝大家有美好的一天。