ModelViewSet的路由有两种写法,区别不大,看自己喜好。
urls.py:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
# 第一种
router = DefaultRouter()
router.register('user', views.UserModelView) # user即路由名
urlpatterns = [
path('', include(router.urls)),
]
# 第二种
router = DefaultRouter() # 可以处理视图的路由器
router.register(r'projects', views.ProjectTypeViewSet)
urlpatterns = [
]
urlpatterns += router.urls
views.py:
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserModelSer
filter_fields = ('age', 'home', 'hight') # 过滤(age,home等分别为过滤或排序的字段)
ordering_fields = ('age', 'hight') # 排序 (这里的过滤和排序需要在settings里配置,需要代码欢迎到主页查看,过滤也可以使用filter_backends在类中设置)
serializers.py:
class UserModelSer(serializers.ModelSerializer):
class Meta:
model = User
# fields = ("username", "hight", "age")
fields = "__all__"