首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Ajax更新特定对象中的单个字段的正确方法

使用Ajax更新特定对象中的单个字段的正确方法
EN

Stack Overflow用户
提问于 2018-12-14 02:35:39
回答 2查看 579关注 0票数 1

可以使用Ajax来更新特定对象中的单个字段吗?我有一个包含许多记录的postgres表,我想使用jquery Ajax请求来更新该表中特定对象中的单个字段。可以在不替换或重新发布整个记录的情况下做到这一点吗?

我想要这样(给我一个400错误的请求):

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: '/api/MyEndPoint/',
    data: {
        id: Specific_Record,
        Field_To_Update: New_Value, 
    }, 
    success: function(data){
        console.log( 'success, server says '+data);  
    }
});

而不是这样(它是有效的):

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: '/api/MyEndPoint/',
    data: {
        id: Specific_Record,
        Field_To_Update: New_Value, 
        Field1: SameAsBefore, 
        Field2: SameAsBefore,  
        Field3: SameAsBefore,  
        ...  
        Field16: SameAsBefore, 
    }, 
    success: function(data){
        console.log( 'success, server says '+data);  
    }
});

*注:我使用的是Django,可以很容易地在views.py中完成此更新,但我想使用Javascript来避免页面刷新。

既然我也在使用Django Rest框架,创建一个特定于我想要更新的字段的新端点对我来说是不是更好?例如:/api/DB_Table/Object_id/Field_to_Update

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-14 14:05:55

我认为您可以以最简单的形式使用Django RestFramework库提供的RetrieveUpdateAPIView通用视图

这将暴露以下apis:

GETReturn对象

PATCHUpdate对象数据(partially,按照约定)

PUTUpdate对象数据

参考:https://www.django-rest-framework.org/api-guide/generic-views/#retrieveupdateapiview

如果你也想删除对象,那么你可以使用RetrieveUpdateDestroyAPIView,这将支持DELETE来删除对象

参考:https://www.django-rest-framework.org/api-guide/generic-views/#retrieveupdatedestroyapiview

票数 1
EN

Stack Overflow用户

发布于 2018-12-14 06:22:49

是的,您可以使用补丁HTTP方法来完成此操作,在REST术语中,这称为部分更新。默认情况下,它已经在DRF中实现了,因此您不必为此重写任何方法。这与PUT相反,PUT是完全更新,需要您将所有必需字段添加到请求中,除非您覆盖默认行为

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53768157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档