restfor

from django.http import HttpResponse, JsonResponse
from rest_framework.schemas import SchemaGenerator
from django.http import QueryDict
from rest_framework.request import Request
from rest_framework.views import APIView
from rest_framework.permissions import AllowAny
from rest_framework.schemas import SchemaGenerator
from rest_framework.schemas.generators import LinkNode, insert_into
from rest_framework.renderers import *
from rest_framework_swagger import renderers
from rest_framework.response import Response
import rest_framework
class MySchemaGenerator(SchemaGenerator):

    def get_links(self, request=None):
        links = LinkNode()
        paths = []
        view_endpoints = []
        for path, method, callback in self.endpoints:
            view = self.create_view(callback, method, request)
            path = self.coerce_path(path, method, view)
            paths.append(path)
            view_endpoints.append((path, method, view))
        # Only generate the path prefix for paths that will be included
        if not paths:
            return None
        prefix = self.determine_path_prefix(paths)
        for path, method, view in view_endpoints:
            if not self.has_view_permissions(path, method, view):
                continue
            link = view.schema.get_link(path, method, base_url=self.url)
            if method=='GET':
                link._fields += self.get_core_fields_get(view)
            if method=='POST':
                link._fields += self.get_core_fields_post(view)

            subpath = path[len(prefix):]
            keys = self.get_keys(subpath, method, view)
            insert_into(links, keys, link)
        return links
    def get_core_fields_get(self, view):
        rest_framework.schemas.inspectors.AutoSchema
        return getattr(view, 'coreapi_fields_get', ())
    def get_core_fields_post(self, view):
        return getattr(view, 'coreapi_fields_post', ())


class SwaggerSchemaView(APIView):
    _ignore_model_permissions = True
    exclude_from_schema = True
    permission_classes = [AllowAny]
    renderer_classes = [
        CoreJSONRenderer,
        renderers.OpenAPIRenderer,
        renderers.SwaggerUIRenderer
    ]
    def get(self, request):
        generator = MySchemaGenerator(title='api接口',
                                      description='''api接口''')
        schema = generator.get_schema(request=request)
        return Response(schema)



def DocParam(name="default", location="query",
             required=True, description=None, type="string",
             *args, **kwargs):
    return coreapi.Field(name=name, location=location,
                         required=required, description=description,
                         type=type)

def get_parameter_dic(request, *args, **kwargs):

    if isinstance(request, Request) == False:
        return {}
    query_params = request.query_params
    if isinstance(query_params, QueryDict):
        query_params = query_params.dict()
        result_data = request.data
    if isinstance(result_data, QueryDict):
        result_data = result_data.dict()
    if query_params != {}:
        query_params
    else:
        return result_data

 

from django.conf.urls import url,include
from django.contrib import admin
from rest_framework import routers
import mysite.views as views
from rest_framework.schemas import get_schema_view
import rest_framework_swagger
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
schema_view = get_schema_view(title='Users API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])

#
# urlpatterns = [
#     url(r'^admin/', admin.site.urls),
#     url(r'^api/', include('src.emoc.urls')),
#     url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
# ]
urlpatterns = [
url(r'^docs/', schema_view, name='apiDocs'),
url(r'^docs1/', views.SwaggerSchemaView.as_view(), name='apiDocs1'),
url(r'^admin/', admin.site.urls),
url(r'^',include(router.urls)),
url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework')),
url(r'^api/getjson', views.ReturnJson.as_view()),
url(r'^api/getjson1', views.ReturnJson1.as_view()),

]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值