美文网首页
django-restframework-swagger 没有m

django-restframework-swagger 没有m

作者: DC_5753 | 来源:发表于2018-11-08 09:38 被阅读0次

django-restframework-swagger 2.1.2(2.2.0也可以,UI更好看些,但是不方便测试,所以我选择2.1.2)

效果图

image.png

参数框:


class S2ViewList(GenericAPIView):#

serializer_class = S2createSerializer #指定序列化类,自动显示model body



schema = AutoSchema (

manual_fields=[

coreapi.Field (name='vxnet',required=False,location='query',description='',type='string'),

coreapi.Field (name='service_type',required=False,location='query',description='',

type='string'),

]

)

def get(self,request,format=None):

.....

def post(self, request,format=None):

.......

AutoSchema的参数对所有方法都一致,为了区分不同方法显示不同参数,参考AutoSchema源码,继承它写一个新类:

class RecycleSchema (AutoSchema):
    """
    Overrides 'get_manual_fields()' to provide Custom Behavior X
    """
    
    def __init__(self, manual_fields=None, delete_fields=None):
        """
        Parameters:

        * `manual_fields`: list of `coreapi.Field` instances that
            will be added to auto-generated fields, overwriting on `Field.name`
        """
        super (RecycleSchema, self).__init__ (manual_fields)
        if manual_fields is None:
            manual_fields = []
        self._manual_fields = manual_fields
        if delete_fields is None:
            delete_fields = []
        self._delete_fields = delete_fields
    
    def get_manual_fields(self, path, method):
        """Example adding per-method fields."""
        
        delete_fields = []
        if method == 'DELETE':
            delete_fields = self._delete_fields
        
        manual_fields = super ().get_manual_fields (path, method)
        return manual_fields + delete_fields
    
    def get_delete_fields(self, path, method):
        return self._delete_fields

view中:

class InstancesList(APIView):
    """
    get:
        获取回收站instances列表
    delete:
        彻底删除instance
    """
    schema = RecycleSchema(
        manual_fields=[
            coreapi.Field(
                name='Authorization',
                required='True',
                location='header',
                description='Authentication header',
                type='string'),
            coreapi.Field(
                name='DcCode',
                required='True',
                location='header',
                description='dccode header')],
        delete_fields=[
            coreapi.Field(
                name='instances',
                required=True,
                location="query",
                description='主机id')])

若想实现response body也显示model,考虑使用drf-yasg,其使用openapi,swagger界面更完善(复杂):
https://github.com/axnsan12/drf-yasg/tree/23ebba420734d9760d2e60d4c3b057d7accc8996#code-generation

相关文章

  • django-restframework-swagger 没有m

    django-restframework-swagger 2.1.2(2.2.0也可以,UI更好看些,但是不方便测...

  • "_OBJC_CLASS_$_SSKeychain", refe

    .m 文件没有导入 "Build Phases"->"Compile Sources" 导入报错的.m文件

  • 像小朋友一样拥一颗好奇心

    “M老师,我们老师说大学没有作业,寒暑假也没有作业,好爽哦!” “M老师,四百七十多分能考去什么学校呀?” “M老...

  • 关于梦想

    M:你有梦想吗? D:有。 M:是什么? D:我要做雷伊! M:保护全人类吗? D:可是我没有翅膀······ M...

  • 读《古代M主与现代M主》

    《古代M主与现代M主》,这本书主要介绍的是古希腊的M主制度,并没有提及现代M主制度。到是《自由M主的生平与时代》讲...

  • iOS开发之地图-添加多个自定义的大头针及自定义大头针动画

    ViewController.m(声明文件中我没有写代码) //// MyAnnotation.m// Add...

  • Stock

    out of stock 抱歉,恐怕已经没有货了I'm sorry, but i'm afraid they're...

  • 嗯m m m

    今天唯一比较开心还不是特别开心的事情大概就是发现今天星期四了吧,还以为星期三,一看手机,星期四

  • java引用类型

    强引用 M m = new M();没有任何引用指向该对象时, 该对象就能被回收,最常用的引用 软引用 Soft...

  • 给自己说声再见(M4)

    行至M4,在写这篇学习报告时,我粗略翻看了简书中M1-M3的一些图片、感悟。没有波澜,没有兴奋,只有平静。这样的感...

网友评论

      本文标题:django-restframework-swagger 没有m

      本文链接:https://www.haomeiwen.com/subject/pcuixqtx.html