项目源码下载:https://github.com/Cherish-sun/NEWS/tree/master
实现新闻标签、广告的web API
一、serializers.py 添加
# 按serializers来序列化新闻标签
class TagSerializer(serializers.ModelSerializer):
# id = serializers.Field()
name = serializers.CharField(required=True, max_length=100)
slug = serializers.CharField(required=True, max_length=100)
class Meta:
model = Tag
fields = ('id', 'name', 'slug')
# 广告
class AdSerializer(serializers.ModelSerializer):
class Meta:
model = Ad
fields = "__all__"
二、views.py中设置新闻标签、广告的Viewset
class TagViewset(viewsets.ModelViewSet):
"""
list:
GET url: /tag/ 标签列表数据
create:
POST url: /tag/ 创建标签详情,返回新生成的标签对像
retrieve:
GET url: /tag/1/ 获取标签详情,返回标签对像
update:
PUT url: /tag/1/ 修改标签详情,返回标签对像
delete:
DELETE url: /tag/1/ 删除标签详情,返回空对像
"""
# 用于从此视图返回对象的查询器集。
queryset = Tag.objects.all()
# filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
# 查询
# filter_class =
# SearchFilter对应search_fields,对应模糊查询,也可用关连表的字段进行查询,但需要二个下划线连接,如categorys__title
search_fields = ('name')
# 用于验证和反序列化输入以及序列化输出的serializer类。通常,您必须设置此属性,或覆盖该 get_serializer_class()方法。
serializer_class = TagSerializer
# 应用于执行单个模型实例的对象查找的模型字段。默认为’pk’。
lookup_field = "id"
class AdViewset(viewsets.ModelViewSet):
"""
list:
GET url: /ad/ 广告列表数据
create:
POST url: /ad/ 创建广告详情,返回新生成的广告对像
retrieve:
GET url: /ad/1/ 获取广告详情,返回广告对像
update:
PUT url: /ad/1/ 修改广告详情,返回广告对像
delete:
DELETE url: /ad/1/ 删除广告详情,返回空对像
"""
# 用于从此视图返回对象的查询器集。
queryset = Ad.objects.all()
# filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
# 查询
# filter_class =
# SearchFilter对应search_fields,对应模糊查询,也可用关连表的字段进行查询,但需要二个下划线连接,如categorys__title
search_fields = ('title')
# 用于验证和反序列化输入以及序列化输出的serializer类。通常,您必须设置此属性,或覆盖该get_serializer_class()方法。
serializer_class = AdSerializer
# 应用于执行单个模型实例的对象查找的模型字段。默认为’pk’。
lookup_field = "id"
三、将两个类注册到urls.py里
router.register(r'tag', view.TagViewset, ba