django-rest-framework自定义大摇大摆过程详解

  

  

之前的文章编写了一个返回json的例子,直接用浏览器进行得到请求虽然成功了,但是接口文档的样式很难看,不好用。而且提示没有访问权限。
  

  

我们一般都希望能够直接在接口文档中进行请求,以测试接口,本篇文章中会给出一个自定义大摇大摆(openapi)的例子。使接口文档变得美观可用,可以填写参数,可以进行请求以观察数据格式,测试接口是否可用。
  

  


  

        被python35   皮普列表            chardet (3.0.4)   coreapi (2.3.3)   coreschema (0.0.4)   Django (1.11.6)   django-rest-swagger (2.1.2)   django-simple-serializer (2.0.7)   djangorestframework (3.7.1)   未来(0.16.0)   idna (2.6)   itypes (1.1.0)   Jinja2 (2.9.6)   MarkupSafe (1.0)   openapi-codec (1.3.2)   皮普(9.0.1)   pytz (2017.2)   请求(2.18.4)   setuptools (36.6.0)   simplejson (3.11.1)   uritemplate (3.0.0)   urllib3 (1.22)   轮(0.30.0)      

阿里云的源中最新版的django-rest-frmework版本为3.7.1
  

  

3.6与3.7的结构稍有不同。我之前用3.6,但是以下对大摇大摆的修改以3.7.1版本为基准。理解原理之后不同版本只需要稍作修改即可。
  

  


  

  

进入设置。py文件,确保INSTALLED_APPS中包含rest_framework
  

        INSTALLED_APPS=[   “django.contrib.admin”,   “django.contrib.auth”,   “django.contrib.contenttypes”,   “django.contrib.sessions”,   “django.contrib.messages”,   “django.contrib.staticfiles”,   “rest_framework”,   “rest_framework_swagger”,   “mytest”,   )      

我们导入了三个框架
  

  
      <李> rest_framework李   <李> rest_framework_swagger李   <李> mytest(之前的文章中编写简单接口的应用)   
  

然后在设置。py文件中添加以下代码
  

        REST_FRAMEWORK={   #下面这一行表示接口文档的访问权限,AllowAny不做权限限制。   “DEFAULT_PERMISSION_CLASSES”: (“rest_framework.permissions.AllowAny”),   #的页大小:10   “PAGINATE_BY”: 10   }         SWAGGER_SETTINGS={   #基础样式   “SECURITY_DEFINITIONS”: {   "基本":{   “类型”:“基本”   }   },   #如果需要登录才能够查看接口文档,登录的链接使用restframework自带的。   “LOGIN_URL”:“rest_framework:登录”,   “LOGOUT_URL”:“rest_framework:注销”,   #“DOC_EXPANSION”:没有,   #“SHOW_REQUEST_HEADERS”:没错,   #“USE_SESSION_AUTH”:没错,   #“DOC_EXPANSION”:“列表”,   #接口文档中方法列表以首字母升序排列   “APIS_SORTER”:“阿尔法”,   #如果支持json提交,则接口文档中包含json输入框   “JSON_EDITOR”:没错,   #方法列表字母排的序   “OPERATIONS_SORTER”:“阿尔法”,   “VALIDATOR_URL”:没有,   }      


  

  

思路:
  

  

之前的url。py中的接口文档页面来自这里
  

        从rest_framework。模式导入get_schema_view      

查看源码,继承模式,返回模式的子类即可。
  

  

接下来编写自己的模式
  

        从rest_framework。权限导入AllowAny   从rest_framework。模式导入SchemaGenerator   从rest_framework.schemas。发电机进口LinkNode insert_into   从rest_framework。渲染器进口*   从rest_framework_swagger导入渲染器   从rest_framework。响应进口响应      从rest_framework #。模式导入SchemaGenerator   类MySchemaGenerator (SchemaGenerator):      def get_links(自我,请求=None):   从rest_framework.schemas #。进口LinkNode发电机,   链接=LinkNode ()      路径=[]   view_endpoints=[]   对于路径,方法,在self.endpoints回调:   视图=自我。create_view(回调方法,请求)   路径=自我。coerce_path(路径,方法,视图)   paths.append(路径)   view_endpoints。追加((路径、方法、视图))      #>   从django.conf。url输入url,包括   django。contrib进口管理   从rest_framework。模式导入get_schema_view   从mytest。视图导入ReturnJson   进口mytest   #下面是刚才自定义的模式   从mytest。视图导入SwaggerSchemaView      urlpattern=[   url (r ^ admin/, admin.site.urls),   url (r ' ^ api-auth/?包括(“rest_framework。url”,名称空间=' rest_framework ')),   url (r ^ docs/, SwaggerSchemaView.as_view ()、name=' apiDocs '),   url (r ^ api/getjson, ReturnJson.as_view ()),   )

django-rest-framework自定义大摇大摆过程详解