【问题标题】:How can I accept Json object from post request?如何接受来自 post 请求的 Json 对象?
【发布时间】:2016-10-27 21:26:33
【问题描述】:

我正在尝试以以下格式从服务器接收帖子:

{
    "event_type": "test",
    "event_info": {
        "key": "value",
        "more unknown key":"Value pairs"...
    }
}

然后将其序列化成一个sqlite db。

我没有找到执行此操作的好方法。它不喜欢 {} 我返回“不是有效的字符串”。我还没有找到接受 json 对象的好方法。我可以将 json 存储为字符串,但我也不知道如何将其转换为字符串。

我有views.py:

from django.shortcuts import render
from .models import Subscription
from .Serializers import SubscriptionSerializer
from rest_framework import viewsets
from django.http import HttpResponse

class SubscriptionViewSet(viewsets.ModelViewSet):
    queryset = Subscription.objects.all().order_by('-date_created')
    serializer_class = SubscriptionSerializer
    http_method_names = ['get', 'post', 'delete']

models.py

from __future__ import unicode_literals

from django.db import models

class Subscription(models.Model):
    event_type = models.TextField(default='Failed to set')
    event_info = models.TextField(default='Failed to set')
    date_created = models.DateTimeField(auto_now=True)

序列化器.py

from rest_framework import serializers
from .models import Subscription

class SubscriptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Subscription
        fields = ('id', 'event_type', 'event_info')

【问题讨论】:

  • 您能说明如何将您的请求发送到服务器吗?
  • 我没有发送任何东西。我正在尝试从另一台服务器接收 POST。
  • 服务器应该以你接受的形式发送请求
  • 完美世界我同意,但是,该服务器超出了我的控制范围,我需要以它发送给我的格式接受有效负载。
  • 尝试使用APIView,有了这个CBV你有更多的灵活性

标签: django django-views django-rest-framework


【解决方案1】:

尝试使用嵌套序列化器:

class KeySerializer(serializers.Serializer):
    key = serializers.CharField(max_length=30)


class EventSerializer(serializers.Serializer):
    event_type = serializers.CharField(max_length=30)
    event_info = KeySerializer()

EventSerializer 应该能够解析/验证您发布的 json。

【讨论】:

  • 如果我不知道每个键并且键可能根据 event_type 中传递的内容而有所不同,KeySerializer 是否可以工作?
猜你喜欢
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2015-12-05
  • 1970-01-01
相关资源
最近更新 更多