手机上怎么制作网站,音乐网站如何建立,广州网站建设外包建设推广,互动营销的案例有哪些正常来说遵循restful风格编写接口#xff0c;定义一个类包含了 get post delete put 四种请求方式#xff0c;这四种请求方式是不能重复的 例如:获取单条记录和多条记录使用的方式都是get#xff0c;如果两个都要实现的话那么得定义两个类#xff0c;因为在同一个类中不能有…正常来说遵循restful风格编写接口定义一个类包含了 get post delete put 四种请求方式这四种请求方式是不能重复的 例如:获取单条记录和多条记录使用的方式都是get如果两个都要实现的话那么得定义两个类因为在同一个类中不能有两个get 这里继承ViewSetMixin来解决该问题(根据是否传参)
comment/views 注意ViewSetMixin继承顺序要放在第一个
from django.http import JsonResponse
from django.shortcuts import render
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin, CreateModelMixin, RetrieveModelMixin, UpdateModelMixin, \DestroyModelMixin
from rest_framework.viewsets import ViewSetMixinfrom apps.comment.models import Comment
from apps.comment.serializers import CommentSerializer# Create your views here.
class CommentGenericAPIView(ViewSetMixin,GenericAPIView,ListModelMixin,CreateModelMixin,RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin):queryset Comment.objectsserializer_class CommentSerializerdef single(self,request,pk):print(我是查询一个)return self.retrieve(request,pk)def my_list(self,request):print(我是查询多个)return self.list(request)def edit(self,request,pk):print(我是更新)return self.update(request,pk)def my_save(self,request):print(我是保存)return self.create(request)def my_delete(self,request,pk):print(我是删除)return self.destroy(request,pk)
comment/urls
from django.urls import path, re_path
from .views import CommentGenericAPIViewurlpatterns [path(,CommentGenericAPIView.as_view({get:my_list,post:my_save #保存})),re_path((?Ppk.*),CommentGenericAPIView.as_view({get:single,post:edit, #编辑delete:my_delete})),
]
comment/models
from django.db import models# Create your models here.
from django.db import modelsclass Comment(models.Model):user_id models.IntegerField(blankTrue, nullTrue)sku_id models.CharField(max_length255, blankTrue, nullTrue)content models.CharField(max_length255, blankTrue, nullTrue)user_image_url models.CharField(max_length255, blankTrue, nullTrue)reference_name models.CharField(max_length255, blankTrue, nullTrue)score models.IntegerField(blankTrue, nullTrue)nickname models.CharField(max_length255, blankTrue, nullTrue)reply_count models.CharField(max_length255, blankTrue, nullTrue)create_time models.DateTimeField(blankTrue, nullTrue)class Meta:managed Falsedb_table comment
comment/serializers.py
from rest_framework import serializersfrom apps.comment.models import Comment
from apps.goods.models import Goodsclass CommentSerializer(serializers.ModelSerializer):class Meta:model Commentfields __all__
viewsets 路由原理解析 ViewSetMixin中没有路由分发的方法所以此处继承了GenericAPIView(View中有)不然不能进行路由的分发,继承APIView或者View都行