为您的api应用程序生成drf序列化程序、视图和url。

drf-generators的Python项目详细描述


DRF发生器

编写api可能是枯燥和重复的工作。不要在Django Rest Framework中编写另一个粗糙的视图。使用drf生成器,一个简单的命令将为django rest框架应用程序生成所有视图、序列化程序甚至url!

要获得完整的分步教程,请查看我的blog post

这是not旨在为您提供生产质量api。它的目的是快速启动您的开发,避免您为每个模型一遍又一遍地编写相同的代码。


Supported Python versionsLatest VersionLicenseTravis CIDjango 1.9, 1.10DRF 3.5



安装

使用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}
OptionAction
^{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框架的ModelSerializermodels.py中定义的模型进行序列化。

classModelSerializer(serializers.ModelSerializer):classMeta:model=User

视图

drf生成器将为您的应用程序创建views.py。它可以生成ViewSetAPIView和基于函数的视图。运行生成器时设置--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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误