所以我试图在DRF中发送 DELETE 的请求正文。我知道默认情况下,DRF 不支持批量操作,所以我使用django-rest-framework-bulk。
现在,根据教程,我确保仅在过滤查询时才允许批量删除。我正在使用 BulkModelViewset。
考虑这个 json 数组:
[{
"id": "1",
"first_name": "bruce",
"second_name": "banner",
"team": "avengers"
},
{
"id": "2",
"first_name": "clark",
"second_name": "kent",
"team": "Justice League"
}
{
"id": "3",
"first_name": "dead",
"second_name": "pool",
"team": "x force"
}]
Run Code Online (Sandbox Code Playgroud)
现在我可以通过传递如下过滤器来批量删除:
DELETE /api_name/?first_name=bruce,clark
Run Code Online (Sandbox Code Playgroud)
但是我的前端人员想要发送请求正文,因为如果需要删除 100 个对象,则他们不会在查询参数中以逗号分隔的字符串形式发送 100 个 id。
有没有一种方法可以像在 POST、PUT 等中那样发送要删除的请求正文。喜欢,
[{
"id": "1",
"first_name": "bruce",
"second_name": "banner",
"team": "avengers"
},
{
"id": "2",
"first_name": "clark",
"second_name": "kent",
"team": "Justice League"
}] …Run Code Online (Sandbox Code Playgroud) 我是 Django REST Framework 的新手,并在我正在开发的新项目中尝试使用它。因此,根据官方教程,我尝试创建几个 get/post/put 请求,但使用 put 请求时出现以下错误:
预期使用名为“pk”的 URL 关键字参数调用视图 ExampleUpdateView。修复您的 URL 配置,或
.lookup_field正确设置视图上的属性。
models.py
class ExampleModel(models.Model):
foo_field = models.CharField(primary_key=True, max_length=15)
bar_field = models.CharField(max_length=30)
last_updated_by = models.CharField(max_length=15)
last_updated_on = models.DateTimeField()
class Meta:
managed = True
db_table = 'example_db'
unique_together = (('foo_field', 'bar_field'),)
Run Code Online (Sandbox Code Playgroud)
serializers.py
class ExampleSerializer(serializers.ModelSerializer):
class Meta:
model = ExampleModel
fields = ('foo_field', 'bar_field', 'last_updated_by', 'last_updated_on')
Run Code Online (Sandbox Code Playgroud)
urls.py
url(r'^get_example/$', views.ExampleCreateView.as_view()),
url(r'^update_example/(?P<pk>\d+)/$',views.ExampleUpdateView.as_view()),
Run Code Online (Sandbox Code Playgroud)
views.py
class ExampleCreateView(generics.CreateAPIView):
serializer_class = ExampleSerializer
queryset = ExampleModel.objects.all()
class ExampleUpdateView(generics.UpdateAPIView):
queryset = ExampleModel.objects.all()
serializer_class = …Run Code Online (Sandbox Code Playgroud)