【问题标题】:Django Rest Framework - use serializers to send json with requests libraryDjango Rest Framework - 使用序列化程序发送带有请求库的 json
【发布时间】:2017-11-18 02:13:09
【问题描述】:

我有一个 DRF 设置,它接收 json 中的数据并将其存储在 django 中。序列化器正在跟踪

class ReservationSerializer(serializers.ModelSerializer):
    room = RoomSerializer()
    reserved_days = DaySerializer(many=True)
    additional_services = AdditionalServicesSerializer(many=True)


    class Meta:
        model = Reservation
        fields = [
            'start',
            'end',
            'check_in_time',
            'check_out_time',
            'reserved_days',
            'additional_services',
            'room',
            'has_refund',
            'payed',
            'guest_name',
            'reservation_number',
        ]

我可以使用这个序列化程序在 json 中准备模型,然后用Requests library 发送这个 json 吗?

【问题讨论】:

    标签: json django django-rest-framework python-requests


    【解决方案1】:

    这是可行的,如果你看到需要的话。虽然 JSON 编码是在 Response 对象中完成的,它是一个完整的 HTTPResponse 子类,所以您需要对自己的数据进行编码:

    import json
    import requests
    
    my_objects = Reservation.objects.all()
    serializer = ReservationSerializer(data=my_objects, many=True)
    if serializer.is_valid():
      # now you do your encoding:
      encoded_data = json.dumps(serializer.data)
      response = requests.post(your_url, 
                               headers={'Content-Type': 'application/json'},
                               data=encoded_data)
    

    【讨论】:

    • 不适用于传递和验证数据。但如果将 my_objects 直接传递给序列化程序而不进行数据验证,则可以使用
    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2021-05-12
    • 2020-05-23
    • 2016-08-10
    • 2015-08-08
    相关资源
    最近更新 更多