python - 在 API 响应中附加服务器名称——Django rest 框架
问题描述
我一直在尝试使用 Django restframework 创建一个 API。
API 中有一个 Image 字段,它给出了一个相对路径。我想在图像字段之前附加服务器的绝对路径或名称。
但它抛出一个错误TypeError: string indices must be integers
我相信我从有序 dict 创建的 json 是一个字符串,并且没有给出预期的输出。
问题:我需要访问 json 密钥并在其中附加服务器名称。我为此尝试了以下方法。
视图.py
def get_individualmember_details(request):
if request.method == 'GET':
serializer = MasterIndividualMembersSerializer(MasterIndividualMembers.objects.all(), many=True)
result = json.dumps(serializer.data)
print(result)
for row in result:
if row["member_photos"]["image"]:
row["member_photos"]["image"] = request.META['HTTP_HOST'] + "/" + row["member_photos"]["image"]
result = json.dumps(result)
return JsonResponse(json.loads(result), safe=False)
预期输出:
[
{
"individualmemberId": "1",
"member_photos": [
{
"id": 25,
"image": "http://127.0.0.1:8000/individualmemberphotos/user.jpeg", // need to append servername here
"individualmemberId": "1"
}
],
...
...
]
没有上述逻辑的电流输出:
[
{
"individualmemberId": "1",
"member_photos": [
{
"id": 25,
"image": "individualmemberphotos/user.jpeg",
"individualmemberId": "1"
}
],
...
...
]
序列化程序.py
class IndividualPhotosSerializer(serializers.ModelSerializer):
class Meta:
model = IndividualMemberPhotos
fields = "__all__"
class MasterIndividualMembersSerializer(serializers.ModelSerializer):
member_photos = IndividualPhotosSerializer(many=True)
class Meta:
model = MasterIndividualMembers
fields = "__all__"
请建议如何在任何 json 键之前附加服务器名称或字符串。提前致谢!
解决方案
如果您希望为您的文件构建绝对 URL,请在实例化序列化程序时传递请求上下文。否则,文件 URL 是相对的。
context = {'request': request}
serializer = MasterIndividualMembersSerializer(
MasterIndividualMembers.objects.all(),
context=context,
many=True)
推荐阅读
- javascript - Uppy Js 问题(我可以从本地磁盘上传文件,但它不适用于 Google 驱动器或 Dropbox)
- database - 无限滚动以获得个性化推荐
- bittorrent - 通过 Libtorrent 发送消息
- javascript - Angular 单元测试用例服务方法
- django - inlineformset_factory 不止一个模型
- python - Ubuntu20.04python3.8安装Abe包,出现错误:“NameError: name'execfile' is not defined”
- ms-access - MS Access:如果我在一个表中从 maximo 导入数据,我还能在同一个表中添加我自己的字段吗?
- python - 最小化 API 调用次数
- node.js - Mongoose 更新位置的 Array 字段
- anaconda - Anaconda - JupyterLab - spaCy:终端中的“没有名为 spacy 的模块”