为您的api应用程序生成drf序列化程序、视图和url。
drf-generators的Python项目详细描述
DRF发生器
编写api可能是枯燥和重复的工作。不要在Django Rest Framework中编写另一个粗糙的视图。使用drf生成器,一个简单的命令将为django rest框架应用程序生成所有视图、序列化程序甚至url!
要获得完整的分步教程,请查看我的blog post!
这是not旨在为您提供生产质量api。它的目的是快速启动您的开发,避免您为每个模型一遍又一遍地编写相同的代码。
安装
使用pip安装:
$ pip install drf-generators
或者克隆repo并手动安装:
$ git clone https://github.com/brobin/drf-generators.git
$ cd drf-generators
$ python setup.py install
要使用DRF生成器,请将其添加到已安装的应用程序中。
INSTALLED_APPS=(...'rest_framework','drf_generators',...)
note:要使用apiview类,必须设置rest框架的默认分页类和页面大小。
REST_FRAMEWORK={'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination','PAGE_SIZE':15}
用法
要使用生成器,请运行以下命令,其中app是要为其生成api的应用程序。
$ python manage.py generate {app}{options}
Option | Action |
---|---|
^{tt2}$ | Generate only Serializers for your app. |
^{tt3}$ | Generate only Views for your app. |
^{tt4}$ | Generate only urls for your app. |
^{tt5}$ | Overwrite existing files without the warning prompt. |
^{tt6}$, ^{tt7}$ | Format to use when generating views and urls. Valid options: ^{tt8}$, ^{tt9}$, ^{tt10}$, ^{tt11}$. Default: ^{tt8}$. |
^{tt13}$, ^{tt14}$ | Serialization depth for related models. Default: 0 |
^ {STR 1 } $示例:< /强>生成具有函数样式视图的应用程序^ {tt15}$的所有内容,覆盖现有文件,序列化深度为2。
$ python manage.py generate api --format function --force -- depth=2
序列化程序
drf生成器将为您的应用程序创建serializers.py。它目前使用rest框架的ModelSerializer对models.py中定义的模型进行序列化。
classModelSerializer(serializers.ModelSerializer):classMeta:model=User
视图
drf生成器将为您的应用程序创建views.py。它可以生成ViewSet、APIView和基于函数的视图。运行生成器时设置--format选项以选择首选样式
视图集
python manage.py generate api --format viewset
classModelViewSet(ViewSet):deflist(self,request):...defcreate(self,request):...defretrieve(self,request,pk=None):...defupdate(self,request,pk=None):...defdestroy(self,request,pk=None):...
APIView
python manage.py generate api --format apiview
classModelAPIView(APIView):defget(self,request,id,format=None):...defput(self,request,id,format=None):...defdelete(self,request,id,format=None):...classModelAPIListView(APIView):defget(self,request,format=None):...defpost(self,request,format=None):...
功能
python manage.py generate api --format function
@api_view(['GET','POST'])defmodel_list(request):ifrequest.method=='GET':...elifrequest.method=='POST':...@api_view(['GET','PUT','DELETE'])defmodel_detail(request,pk):ifrequest.method=='GET':...elifrequest.method=='PUT':...elifrequest.method=='DELETE':...
模型视图集
python manage.py generate api --format modelviewset
classMyModelViewSet(ModelViewSet):queryset=MyModel.objects.all()serializer_class=MyModelSerializer
网址
最后,drf生成器将为您创建一个默认的urls.py,以匹配您正在使用的视图格式。
视图集和模式视图集路由
router=SimpleRouter()router.register(r'model',views.ModelViewSet,'Model')urlpatterns=router.urls
apiview url
url(r'^model/([0-9]+)$',views.ModelAPIView.as_view()),url(r'^model',views.ModelAPIListView.as_view()),
函数url
urlpatterns=[url(r'^model/(?P<pk>[0-9]+)$',views.model_detail),url(r'^model/$',views.model_list),]urlpatterns=format_suffix_patterns(urlpatterns)
测试
使用drf生成器构建的完整应用程序可以在tests directory中找到。运行测试的说明可以在测试项目的自述文件中找到。
许可证
麻省理工学院执照。见LICENSE。