【问题标题】:Django REST Framework that doesn't alter the model data不改变模型数据的 Django REST 框架
【发布时间】:2018-06-02 13:58:56
【问题描述】:

我正在尝试创建一个允许用户控制我们服务器上的某些服务的中间件 Web 应用程序。为此,我在 Django 中创建了几个模型,用于跟踪服务器的当前状态或对任何给定服务有效的输入列表。

API 需要能够:

  • 列出模型的所有实例
  • 显示一个模型实例的详细信息
  • 接受将 JSON 转换为软件指令(即“此输出列表应来自此输入”)

我不需要进一步访问数据 - 对模型详细信息的任何更改都将由超级用户通过 Django 管理界面完成,因为它只会在软件配置更改时更改。

到目前为止,我发现的所有 DRF 文档都假定 API 将用于创建和更新模型数据 - 如何仅将 DRF 用于 GET 调用和自定义操作?还是我应该放弃 DRF,只使用普通的 Django,返回 JSON 而不是 HTML?

编辑:我已经意识到我的困惑来自哪里;我误解了序列化程序与视图集的目的/功能。序列化程序将始终具有 create + update 方法,因为它们将传入数据转换为模型对象。视图集决定了可以对该对象执行的操作,因此您可以在其中启用不同的访问方法。

【问题讨论】:

标签: python django django-rest-framework


【解决方案1】:

如果您使用ModelViewSet,则可以使用http_method_names 类变量。

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer
    http_method_names = ['get']

【讨论】:

    【解决方案2】:

    您可以尝试使用readonlymodelviewset,示例来自文档

    class AccountViewSet(viewsets.ReadOnlyModelViewSet):
        """
        A simple ViewSet for viewing accounts.
        """
        queryset = Account.objects.all()
        serializer_class = AccountSerializer
    

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2017-06-04
      • 2021-06-07
      • 2017-07-23
      • 1970-01-01
      相关资源
      最近更新 更多