一、url控制
基本路由写法:最常用
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^books/', views.Books.as_view()), url(r'^book/', views.Book.as_view()), url(r'^login/', views.Login.as_view()), ]
第二种写法:继承ModelViewSet
基于mixins来封装的视图就是使用了继承ModelViewSet,然后改写路由:
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})), url(r'^publish/(?P<pk>\d+)/$', views.PublishView.as_view({'get':'retrieve','put':'update','delete':'destroy'})), ]
第三种写法:(自动生成路由,必须继承ModelViewSet)
# SimpleRouter 自动生成两条路由
实现过程:
tips:使用python的manage.py的shell环境进行快速添加数据用于测试:
pycharm>>Terminal:
python3 manage.py shell >>> from app01 import models >>> models.Publish.objects.create(name='北方出版社',addr='北京') <Publish: Publish object> >>> models.Publish.objects.create(name='长江出版社',addr='湖北') <Publish: Publish object> >>> models.Publish.objects.create(name='东方出版社',addr='唐朝') <Publish: Publish object>
from django.shortcuts import render from rest_framework.response import Response # Create your views here. from app01 import models from app01.MySer import PublishSer from rest_framework.viewsets import ModelViewSet class PublishDetails(ModelViewSet): queryset = models.Publish.objects.all() serializer_class = PublishSer