如何使 django rest framework POST 按钮工作?
How to make the django rest framework POST button work?
我有这样一个模型:
class Ad(models.Model) :
title = models.CharField(
max_length=200,
validators=[MinLengthValidator(2, "Title must be greater than 2 characters")]
)
price = models.DecimalField(max_digits=7, decimal_places=2, null=True)
text = models.TextField()
# Shows up in the admin list
def __str__(self):
return self.title
像这样的视图集:
class AdViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows ad to be viewed or edited.
"""
queryset = Ad.objects.all()
serializer_class = AdSerializer
class AdSerializer(serializers.ModelSerializer):
class Meta:
model = Ad
fields = ['id', 'title', 'price', 'text']
我制作了我没有包含在这里的路由器,因为我认为不需要它来显示我的问题。
在 /api/ads/
的 Django Rest Framework 中,我可以看到我以前使用 django 管理创建的所有广告,并在 post 数据表单下方看到如下所示:
当我单击表单的 POST 按钮时,它不会发出 POST 请求,它只是重新加载页面。我可以从 Firefox devtool 和服务器日志中确认,没有发出 POST 请求。
所以我的问题是:如何让这个 POST 按钮按预期工作,这样我就可以检查我的序列化程序以及一切是否正常工作?
Edit: 经过测试,put、patch、delete 按钮也不起作用,它们不发送put/patch/delete header,只是获取header like post
经过大量研究,我发现问题出在 ublock 来源。
Ublock origin 阻止浏览器在本地主机上发出请求,所以我停用了它,现在它按预期工作了。
如果您遇到同样的问题,请检查您的广告拦截器。
我有这样一个模型:
class Ad(models.Model) :
title = models.CharField(
max_length=200,
validators=[MinLengthValidator(2, "Title must be greater than 2 characters")]
)
price = models.DecimalField(max_digits=7, decimal_places=2, null=True)
text = models.TextField()
# Shows up in the admin list
def __str__(self):
return self.title
像这样的视图集:
class AdViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows ad to be viewed or edited.
"""
queryset = Ad.objects.all()
serializer_class = AdSerializer
class AdSerializer(serializers.ModelSerializer):
class Meta:
model = Ad
fields = ['id', 'title', 'price', 'text']
我制作了我没有包含在这里的路由器,因为我认为不需要它来显示我的问题。
在 /api/ads/
的 Django Rest Framework 中,我可以看到我以前使用 django 管理创建的所有广告,并在 post 数据表单下方看到如下所示:
当我单击表单的 POST 按钮时,它不会发出 POST 请求,它只是重新加载页面。我可以从 Firefox devtool 和服务器日志中确认,没有发出 POST 请求。
所以我的问题是:如何让这个 POST 按钮按预期工作,这样我就可以检查我的序列化程序以及一切是否正常工作?
Edit: 经过测试,put、patch、delete 按钮也不起作用,它们不发送put/patch/delete header,只是获取header like post
经过大量研究,我发现问题出在 ublock 来源。
Ublock origin 阻止浏览器在本地主机上发出请求,所以我停用了它,现在它按预期工作了。
如果您遇到同样的问题,请检查您的广告拦截器。