我想在 Django 中實作這一點
- 列出所有專案
- 只獲得一件物品
def get(self, request, pk, format=None):
if pk is not None:
product = self.get_object(pk)
serializer = ProductSerializer(product)
else:
products = Product.objects.all()
serializer = ProductSerializer(products)
return Response(serializer.data)
如果 pk 在 URL 中,如果不獲取所有串列,則僅獲取一種產品。
我怎樣才能在 URL 中實作這一點?我正在做的是這個
re_path(r"(?P<pk>\d )", ProductView.as_view(), name="product"),
但是這里需要 'pk' 引數。我不希望 pk 是必需的,而是可選的。
提前致謝
uj5u.com熱心網友回復:
定義兩條路徑:
urlpatterns = [
path('/', ProductView.as_view(), {'pk': None}, name='products'),
path('<int:pk>/', ProductView.as_view(), name='product'),
# …
]
該{'pk': None}部分指定要傳遞的值。
另一種方法是使pk可選,因此:
def get(self, request, pk=None, format=None):
if pk is not None:
product = self.get_object(pk)
serializer = ProductSerializer(product)
else:
products = Product.objects.all()
serializer = ProductSerializer(products, many=True)
return Response(serializer.data)
然后你再次使用兩條路徑:
urlpatterns = [
path('/', ProductView.as_view(), name='products'),
path('<int:pk>/', ProductView.as_view(), name='product'),
# …
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/434709.html
上一篇:添加資料的表單是否必須包含models.py的所有欄位才能保存?
下一篇:創建新帳戶時重新上傳默認影像
