![](/img/trans.png)
[英]how to return response message with 400 bad request status code from django restframwork?
[英]How to request a filtered viewset in django restframwork
我需要通过使用 Django rest 框架调用 HTTP 请求来检索过滤的数据集。
这是我的 API 代码:
网址.py
urlpatterns = [
path('api/get_products/', views.get_products),
]
视图.py
@api_view(["GET", ])
def get_products(request):
category_name = request.data['category_name']
category_obj = Category.objects.get(name=category_name)
products_list = Product.objects.filter(category=category_obj)
serializer = ProductSerializers(products_list)
return Response(serializer.data)
最后是serialierz.py
class CategorySerializers(serializers.HyperlinkedModelSerializer):
class Meta:
model = Category
fields = ['name', 'id']
class ProductSerializers(serializers.HyperlinkedModelSerializer):
category = CategorySerializers()
class Meta:
model = Product
fields = '__all__'
并尝试使用带有参数的 get 请求调用它: {'category_name':'the_name_of_the_category' }
并返回此错误:
KeyError at /categories/api/api/get_products/
'category_name'
您的 API 方法是 GET 方法。 你不能用 get 方法接受 body。 您可以使用 POST 方法或更好的方法更改您的 API 方法,您可以使用 url 获取“category_name”。 您可以像这样添加 url 变量:
path('api/get_products/<slug:category_name>', views.get_products),
和您的视图方法:
def get_products(request,category_name):
category_obj = Category.objects.get(name=category_name)
products_list = Product.objects.filter(category=category_obj)
serializer = ProductSerializers(products_list)
return Response(serializer.data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.