https://www.django-rest-framework.org/
#直接百度找到的djangorestframework的官网是打不开的
pip install django-guardian
pip install coreapi
from django.urls import path
from django.views.static import serve
from MxShop.settings import MEDIA_ROOT
from django.urls import include
import xadmin
from rest_framework.documentation import include_docs_urls
from goods.views import GoodsListView
urlpatterns = [
path('xadmin/', xadmin.site.urls),
path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),
path('ueditor/',include('DjangoUeditor.urls' )),
path('docs/',include_docs_urls(title="慕学生鲜")),
path('api-auth/', include('rest_framework.urls')),
path('goods/',GoodsListView.as_view(),name='goods-list'),
]
from rest_framework import serializers
from goods.models import Goods,GoodsCategory
class GoodsSerializer(serializers.Serializer):
name=serializers.CharField(required=True,max_length=100)
click_num=serializers.IntegerField(default=0)
def create(self, validated_data):
return Goods.objects.create(**validated_data)
from rest_framework import serializers
from goods.models import Goods,GoodsCategory
class GoodsCategorySerializer(serializers.ModelSerializer):
class Meta:
model = GoodsCategory
fields = '__all__'
class GoodsSerializer(serializers.ModelSerializer):
category=GoodsCategorySerializer()
class Meta:
model=Goods
#部分属性
#fields=('name','click_num','market_price','add_time')
#所有属性
fields='__all__'
from goods.views import GoodsListView
urlpatterns = [
#。。。。
path('goods/',GoodsListView.as_view(),name='goods-list'),
]
from .serializers import GoodsSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Goods
from rest_framework import status
class GoodsListView(APIView):
"""
List all goods
"""
def get(self, request, format=None):
goods=Goods.objects.all()[:10]
goods_serializer = GoodsSerializer(goods, many=True)
return Response(goods_serializer.data)
def post(self,request,format=None):
serializer=GoodsSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
from .serializers import GoodsSerializer
from .models import Goods
from rest_framework import mixins
from rest_framework import generics
class GoodsListView(mixins.ListModelMixin,generics.GenericAPIView):
"""
商品列表页
"""
from .serializers import GoodsSerializer
from .models import Goods
from rest_framework import generics
class GoodsListView(generics.ListAPIView):
"""
商品列表页
"""
queryset = Goods.objects.get_queryset().order_by('id')
serializer_class = GoodsSerializer
REST_FRAMEWORK={
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
}
from rest_framework.pagination import PageNumberPagination
class GoodsPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
page_query_param = 'p'
max_page_size = 100
class GoodsListView(generics.ListAPIView):
"""
商品列表页
"""
queryset = Goods.objects.get_queryset().order_by('id')
serializer_class = GoodsSerializer
pagination_class = GoodsPagination