DRF-接口文档-(三方drf-yasg)-(简单使用): 使用自定义的认证类,使用jwt做token时,想要使用自动生成文档

一、安装drf-yasg包

先安装

pip3 install coreapi

pip3 install drf-yasg

二、配置

1、在settings中配置

#注册app
INSTALLED_APPS = [
     ....
    'drf_yasg',
     ...
]

#因为我们自定义的认证类,有些接口访问需要使用token,后面就可以在文档中,在请求头中带上token了

SWAGGER_SETTINGS = {
    'USE_SESSION_AUTH': True,
    'SECURITY_DEFINITIONS': {
        'Token': {
            'type': 'apiKey',  #
            'name': 'Authorization',
            'in': 'header'
        },
    },
}
# 认证使用自己定义的认证类(不属于drf-yasg的配置,只是说明上面配置的token是为解决自定义认证存在的403问题)
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
    # 自己写的认证类
    'studentSystemt.apps.user.authen.MyJWTAuthentication'

    ],
}

2、在urls中配置

from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
    openapi.Info(
        title="API接口文档平台",    # 必传
        default_version='v1',   # 必传
        description="这是一个接口文档",
        terms_of_service="http://api.zengsijiu.site",
        contact=openapi.Contact(email="yueyueniao@qq.com"),
        license=openapi.License(name="BSD License"),
    ),
    public=True,
    # permission_classes=(permissions.AllowAny,),   # 权限类
)


urlpatterns = [
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),

]

三、写模型类

id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20,verbose_name='书名',help_text='书名')
price = models.DecimalField(max_digits=10,decimal_places=2,verbose_name='价格',help_text='价格')

#这里的help_text就是给文档中对该字段的注释,

#所以,最好对每一个字段都加上help_text参数,给字段加上合适的注释

四、写视图类

#方式一:通过视图集,没有手动写视图函数的,写上注释后,对于该类生成的所有的视图函数都是同一个注释的
class BooKGenericaView(GenericViewSet, ListModelMixin, CreateModelMixin):
    '''
    :param : get:
    获取数据库中所有的书的信息
    :param: post:
    新建一本书导数数据库中,可以先通过对publish的get方法获取出版社的id
    name 书名、publish(外键,输入id) 出版社、price 价格
    '''
    serializer_class = serializer.BookGenericViewSetSerializer
    queryset = models.Book.objects.all()

#方式二:所有视图函数都是自己手写的,在每个视图都进行了注释

class BooKGenericViewSetPK(GenericViewSet,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin):

    serializer_class = serializer.BookGenericViewSetSerializer
    queryset = models.Book.objects.all()

    def retrieve(self, request, *args, **kwargs):
        '''
        :param 获取指定书籍的信息,/book/id/  get
        '''
        return  super().retrieve(request,*args,**kwargs)

    def update(self, request, *args, **kwargs):
        '''
        :param 更新指定书的数据 /book/id/  patch方法
        '''
        return super().update(request,*args,**kwargs)

    def destroy(self, request, *args, **kwargs):
        '''
        :param 删除指定的书籍 /book/id/ delete
        '''
        return super().destroy(request,*args,**kwargs)

方式一:在每个视图函数中都写着一样的注释

方式二:在手动写视图函数,给函数写注释,不同路由下显示特定的注释

 

 

Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django的主要目标是简化构建复杂、数据库驱动的网站的过程。以下是你提到的几个库和它们的作用: 1. Django==5.1: 这是指你正在使用Django框架的版本。版本5.1是Django的一个较新版本,它包含了许多新特性和改进。 2. django-cors-headers==4.4.0: 这是一个Django中间件,用于解决跨源资源共享(CORS)的问题。当你希望你的Django应用能够接收来自不同源(域名、协议或端口)的请求使用这个库可以添加适当的HTTP头(CORS headers),允许跨域请求。 3. djangorestframework==3.15.2: Django REST framework 是一个灵活且强大的工具包,用于构建Web API。它为Django应用提供了一种简单而快速的方法来创建RESTful风格的Web服务端点。 4. djangorestframework-simplejwt==5.3.1: 这是一个Django REST framework的第三方库,它实现了JSON Web Token (JWT) 认证JWT是一种开放标准(RFC 7519),用于在网络应用环境间安全地传输信息。这个库允许使用JWT作为API的认证机制。 5. drf-yasg==1.21.7: 这是“Django REST framework - Yet another Swagger generator”的缩写。它是一个自动生成Swagger文档的工具,Swagger是一个广泛使用的API描述语言,允许开发者和团队设计、构建、记录和使用RESTful Web服务。这个库可以自动从Django REST framework的视图中提取API文档并生成Swagger文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值