【发布时间】:2021-04-16 16:00:59
【问题描述】:
我有一个非常简单的 urls.py:
router = routers.DefaultRouter()
router.register(r'products', views.ProductViewSet, basename = "product")
urlpatterns = [
url('^api/', include(router.urls)), ...]
Product 看起来像这样:
class Product(models.Model):
user = models.ManyToManyField(User, related_name="User", blank = True)
name = models.CharField('name', max_length=120)
我想要的是一个从用户那里返回产品的视图,如果用户交给它,并在没有用户提交时返回所有产品。我阅读了多个帖子1、2、3,但我无法解决。让所有产品都能正常工作:
class ProductViewSet(LoginRequiredMixin, viewsets.ViewSet):
login_url = "/login/"
def list(self, request):
data = [{"products": Product.objects.all(),}]
results = ProductSerializer(data, many = True).data
return Response(results)
Serializer.py:
class ProductSerializer(serializers.Serializer):
products = serializers.CharField(max_length = 120)
我可以向我的ProductViewSet 添加另一种方法吗?如何更改 urls.py 以便我可以调用(对于 User 和 id=1):
http://127.0.0.1:8002/api/products/1
编辑:例如,answer 建议使用 request.query_params.get('username') 处理请求中的数据,但将数据附加到我的 url 会导致 404。
【问题讨论】:
标签: django django-rest-framework django-views