当我要求一个图像http://127.0.0.1:8000/api/images/1/或者传入参数进行裁剪http://127.0.0.1:8000/api/images/1/?height=320
我得到的答复是:
{
"image": "/media/10438039923_2ef6f68348_c.jpg",
"description": "Description 1",
"title": "Item 1"
}
而在http://127.0.0.1:8000/api/images/
答复是:
{
"title": "Item 1",
"description": "Description 1",
"image": "http://127.0.0.1:8000/media/10438039923_2ef6f68348_c.jpg"
},
{
"title": "Item 2",
"description": "Description 2",
"image": "http://127.0.0.1:8000/media/ALLEY-stock1502.jpg"
},
为什么缩略图不容易返回主机名,我如何将基本网址追加到响应中?
以下是我的看法。派克
from __future__ import unicode_literals
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework.response import Response
from .models import Image
from .serializers import ImageSerializer
from easy_thumbnails.files import get_thumbnailer
class ImageViewSet(viewsets.ModelViewSet):
queryset = Image.objects.all()
serializer_class = ImageSerializer
def retrieve(self, request, pk=None):
height = request.query_params.get('height', None)
width = request.query_params.get('width', None)
img = self.get_object()
if height and width:
options = {'size': (height, width), 'crop': True}
thumb_url = get_thumbnailer(img.image).get_thumbnail(options).url
else:
thumb_url = get_thumbnailer(img.image).url
serializer = self.get_serializer(img)
response_dict = {}
response_dict.update(serializer.data)
response_dict['image'] = thumb_url
return Response(response_dict)
或者在您的设置中,从
MEDIA_URL = '/media/'
到
MEDIA_URL = 'http://127.0.0.1:8000/media/'
正如Laurent LAPORTE所说,主机名存储在HttpRequest中。
但是要获得它,你不应该直接访问它,而是使用:
get_host()
否则,您将绕过安全保护。
见:https://docs.djangoproject.com/en/2.0/topics/security/#host-标题验证
主机名存储在HttpRequest中,因此您可以在响应中使用它。
见:https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpRequest.META
我正在获取javax.mail.MessagingException:无法连接到SMTP主机:主机名端口:25响应:552 有时邮件发送成功。但有时我会遇到例外。 我不清楚为什么会发生这种情况。如果有什么事情出了问题,那么就不应该发送邮件。但例外情况有时还是会发生。 javax.mail.messagingException:无法连接到SMTP主机:mail.mydomain.com,端口:25,
问题内容: 我想将Pandas数据框附加到名为“ NewTable”的sqlite数据库中的现有表上。NewTable具有三个字段(ID,名称,年龄),ID是主键。我的数据库连接: 我要附加的数据框: 如上所述,ID是NewTable中的主键。键“ L1”已在NewTable中,但键“ L11”不在中。我尝试将数据框追加到NewTable。 这将引发错误: 该错误很可能是因为键“ L1”已经在
问题内容: 我有一个函数,它返回像这样的字典: 我试图将此字典追加到这样的数据框: 不幸的是,数据框的打印导致空的数据框。有任何想法吗? 问题答案: 您没有将值分配给结果。
如果你不想重复造轮子,你可以选择一款响应式的框架,目前市面上类似的框架也有很多,像Bootstrap、Foundation,你也可以使用像H5 Boilerplate来创建响应式项目,但不论你使用何种方式,掌握底层的原理对于你来说比挑选一门框架更有意义。所以大家Fighting~~~
问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:
问题内容: 谁能解释一下主机名和规范主机名之间的区别? 我当前正在使用InetAddress类使用IP地址获取主机名。我遇到了这两个API。所以我只是想知道,我应该选择哪一个? 问题答案: 两者之间有一些区别: 将尝试解析FQDN。因此,您将获得 _foo.mycompany.com, 而可能仅返回 _foo 。 将始终进行反向DNS查找,而如果在构造函数中提供了主机名,则将返回存储的主机名。 如