django restframework自定义模式
django-rest-coreapi-schema的Python项目详细描述
django restframework模式
这个包是django restframework的模式。
如何使用
安装
$ pip install django-rest-coreapi-schema
$ pip install -e git+https://github.com/emilioag/django_rest_coreapi_schema.git#egg=django_rest_coreapi_schema
配置
django设置
在settings.py文件中添加下一个配置。
REST_FRAMEWORK={'DEFAULT_SCHEMA_CLASS':'django_rest_coreapi_schema.schema.CoreAPIAutoSchema',}
restframework文档(url)
将restframework文档添加到url.py中
fromdjango.conf.urlsimporturlfromrest_framework.documentationimportinclude_docs_urlsurlpatterns=[url(r'^docs/',include_docs_urls(title='My API title',description='API description',public=False)),]
创建序列化程序
fromrest_frameworkimportserializersclassUserSerializer(serializers.Serializer):email=serializers.CharField(required=False,help_text="User email")address=serializers.CharField(required=False,help_text="User address")classFilterSerializer(serializers.Serializer):order=serializers.ChoiceField(required=False,choices=[("asc","Asc"),("desc","desc")],help_text="Order")username=serializers.CharField(required=False,help_text="Username pattern")classPathSerializer(serializers.Serializer):username=serializers.CharField(required=True,help_text="Username")
创建分页
fromrest_framework.paginationimportPageNumberPaginationclassLargeResultsSetPagination(PageNumberPagination):page_size=1000page_size_query_param='page_size'max_page_size=10000
创建视图
记录路径变量
您必须使用类变量:queryset
fromdjango_rest_coreapi_schema.viewsimportDocumentedBaseViewclassUserView(DocumentedBaseView):queryset=PathSerializer
URL参数
必须使用类变量:filter_backends和 filter_fields
- filter_backends是包含所有 可能的url参数。
- filter_fields是将出现在 coreapi文档。
fromdjango_rest_coreapi_schema.viewsimportDocumentedBaseViewclassUserListView(DocumentedBaseView):filter_backends=[FilterSerializer]filter_fields=('order','username')
车身
HttpPut、Post等正文。
fromdjango_rest_coreapi_schema.viewsimportDocumentedBaseViewclassUserView(DocumentedBaseView):body_serializer_class=UserSerializer
分页(对于大型结果)
fromdjango_rest_coreapi_schema.viewsimportDocumentedBaseViewclassUserListView(DocumentedBaseView):pagination_class=LargeResultsSetPagination
您可以在examples/restapi文件夹中看到一个完整的示例 储存库。