2016-10-27 3 views
0

私は形式でサーバーからのポストを受信しようとしている:投稿リクエストからJsonオブジェクトを受け入れる方法はありますか?

{ 
    "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) 

Serializers.py

from rest_framework import serializers 
from .models import Subscription 

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

あなたのリクエストをサーバーにどのように送信することができますか? – ettanany

+0

私は何も送っていません。別のサーバーからPOSTを受信しようとしています。 – supakadoo

+0

あなたが受け入れる形式でサーバーに要求を送信する必要があります – ettanany

答えて

0

は、ネストされたシリアライザを使用してみてください:

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を解析/検証できるはずです。

+0

event_typeで渡されたキーに基づいて、すべてのキーとキーが異なる場合、KeySerializerが機能する方法はありますか? – supakadoo

関連する問題