【问题标题】:How can I pass dictionary in Django Rest Framework?如何在 Django Rest Framework 中传递字典?
【发布时间】:2021-10-27 21:00:51
【问题描述】:

在 django 中,我能够使用字典传递数据。就像我在字典中设置对象并将其传递给 return render 并在前端调用对象 (return render(request, 'c.html', context) 对吗?那么我该如何在 django rest 中执行此操作?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    如果你使用的是 django rest framework,你可以像这样在 rest 框架中返回响应。

    context = {'key':'value'}
    return Response(context)
    

    或者如果您使用的是序列化程序,那么

    return Response(serializer.data)
    

    【讨论】:

    • 那么如何在一个视图中同时传递两个序列化程序?假设我有两个序列化器,一个是包含所有产品的产品序列化器,另一个是相关产品的序列化器,在单个产品页面中我想显示产品信息和相关产品,那么现在我将如何传递相关产品信息?
    • 您可以使用两个序列化程序数据创建上下文。 context = { 'product':product_serializer.data, 'related_products': related_products_serializer.data } return Response(context)
    【解决方案2】:

    在 Django REST Framework 中,序列化的概念是将 DB 数据转换为 javascript 可以使用的数据类型。每个序列化程序都带有一些将要处理的字段。例如,如果您有一个名为 Employee 的类,其字段为 Employee_id、Employee_name、is_admin 等。那么,您将需要 AutoField、CharField 和 BooleanField 来通过 Django 存储和操作数据。类似地,序列化器也使用相同的原理,并且具有用于创建序列化器的字段。

    DictField 基本上是一个字典字段,它根据对象字典验证输入。它有以下参数:

    child 和 allow_empty 像这样>>>

    field_name = serializers.DictField(*args, **kwargs)
    

    例如document = DictField(child=CharField())

    你可以像下面这样使用序列化器>>>

    from rest_framework import serializer
    class Any(object):
        def __init__(self, dictonary):
            self.dict = dictionary
    class AnySerializer(serializers.Serializer):
        dictionary = serializers.DictField(
        child = serializers.CharField())
    

    您可以访问similar problem了解真正的问题。

    这个link 是您问题的完整文档。你可以看看这个。

    【讨论】:

    • 那么如何在一个视图中同时传递两个序列化程序?假设我有两个序列化器,一个是包含所有产品的产品序列化器,另一个是相关产品的序列化器,在单个产品页面中我想显示产品信息和相关产品,那么现在我将如何传递相关产品信息?
    • 您可以在他的评论中使用@AshinShakya 解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多