0
使用するdjango-rest-framework私はいくつかの簡単なAPIを実装しようとしています。django-restframework詳細ビューの問題
以下はコードです。私が直面しています
の問題は次のとおりです。
- 製品//はProductsDetailViewを実行したことがない(P \ D +?)。私は常にURLのIDの使用に関係なく、すべての製品のリストを取得します。
- ただし、URLから個の商品/を削除すると、1つの商品が返信されます。しかし、残念ながら、現在そのAPIのURLが削除されているため、すべての商品を手に入れることはできません。
私はこの問題が起こっているために何をしているのか分かりません。私を助けてください。
MODEL:
class Product(models.Model):
product_owner = models.ForeignKey(User, verbose_name='User')
product_imported_via = models.CharField(max_length=200, default="0", null=False, choices=PRODUCT_IMPORT_SOURCE,
verbose_name='Source of import')
product_title = models.CharField(max_length=100, null=False, verbose_name='Product title')
product_description = models.TextField(max_length=250, verbose_name='Product description')
product_qty = models.IntegerField(verbose_name='Quantity')
product_mrp = models.DecimalField(max_digits=12, decimal_places=2, verbose_name='Maximum retail price')
product_offer_price = models.DecimalField(max_digits=12, decimal_places=2, verbose_name='Selling price')
_product_discount_amount = models.FloatField(null=True, editable=False, verbose_name='Discount amount',
db_column='product_discount_amount')
_product_discount_percentage = models.IntegerField(null=True, editable=False, verbose_name='Disount percentage',
db_column='product_discount_percentage')
product_sku = models.CharField(max_length=100, null=False, unique=True, verbose_name='SKU',help_text='Enter Product Stock Keeping Unit')
product_barcode = models.CharField(max_length=100, null=False, verbose_name='Barcode')
archive = models.BooleanField(default=False)
シリアライザ:
from rest_framework import serializers
from .models import Product
class ProductsSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('id','product_title', 'product_description', 'product_qty', 'product_mrp',
'product_offer_price','product_discount_amount','product_discount_percentage',
'product_sku','product_barcode')
閲覧数:
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Product
from .serializers import ProductsSerializer
from django.http import Http404
#Create your views here.
class ProductsListView(APIView):
def get(self, request):
print('In update list')
updates = Product.objects.all()
serializer = ProductsSerializer(updates, many=True)
return Response(serializer.data)
class ProductsDetailView(APIView):
def get_object(self, pk):
try:
return Product.objects.get(pk=pk)
except Product.DoesNotExist:
raise Http404
def get(self, request, pk):
update = self.get_object(pk)
serializer = ProductsSerializer(update)
return Response(serializer.data)
URL S:
from products.views import ProductsListView, ProductsDetailView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^products/', ProductsListView.as_view()),
url(r'^products/(?P<pk>\d+)/', ProductsDetailView.as_view()),
]
はい。文字列の最後に '$'を追加しました。私はそれらを追加することを忘れました。 –