如何通过 post 方法在 django-restful-framework 中创建新对象?

Posted

技术标签:

【中文标题】如何通过 post 方法在 django-restful-framework 中创建新对象?【英文标题】:how can make new object in django-restful-framework by post method? 【发布时间】:2021-07-24 16:40:48 【问题描述】:

我有这个型号

class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.PositiveIntegerField()

我想在 django 的 restframework 中使用 post 方法创建一个新对象,但我不知道该怎么做,请帮助我

@api_view(['POST'])
def create_product(request):
    *******
    return Response(
        *******
    , status=status.HTTP_201_CREATED)

我应该用 **** 替换 django 代码,请帮帮我

【问题讨论】:

【参考方案1】:

简单易懂。最喜欢你在 python 中创建新类对象的方式。

@api_view(['POST'])
def create_product(request):
    p = Product(name='sth', price=1)
    p.save()
    return Response(
         # um... now we should start talking about serializers.
    , status=status.HTTP_201_CREATED)

请注意,方法 save() 不会返回创建的对象,因此如果您需要创建的对象,请遵循模式。

据我所知,发送模型对象作为响应(甚至获取对象数据作为请求)的最佳方式是使用序列化程序。 Serilizer 通常意味着更改数据的格式。在 django 中,我们可以使用序列化程序作为将模型对象转换为 json 的工具。 (如果您不熟悉 json 数据格式,它就像一本字典,既可读又易于编程。) 当然你也可以像这样创建自己的 json 数据(或字典):

data = 
data['name'] = p.name
return Respond(data=data, 
status=status.HTTP_201_CREATED)

但是为什么要麻烦呢?

这里是 drf 的序列化程序文档的链接: https://www.django-rest-framework.org/api-guide/serializers/

享受吧!

【讨论】:

以上是关于如何通过 post 方法在 django-restful-framework 中创建新对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模型序列化器在 django-rest 中序列化一对多关系?

使用 django-allauth 和 django-rest 框架

Django-Rest + React 前端:CORS 问题

使用 angular 向 django-rest 发送 DELETE 请求被解释为 OPTIONS

markdown Fluxo django-rest

如何从 django 信号返回数据?