Django rest_framework_swagger登录之后才能访问API文档

本文介绍了如何配置Django rest_framework_swagger,使得用户必须登录后才能查看API文档。主要涉及步骤包括重写get_swagger_view函数、在urls.py中配置路由以及在settings.py中进行相关设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 重写get_swagger_view函数:

关键语句: 

permission_classes = [permissions.IsAuthenticated]
# 将get_swagger_view函数代码复制一份,修改里面的permission_classes
def get_swagger_view(title=None, url=None, patterns=None, urlconf=None):
    """
    登录访问API文档
    Returns schema view which renders Swagger/OpenAPI.
    """
    class SwaggerSchemaView(APIView):
        _ignore_model_permissions = True
        exclude_from_schema = True

        # 将permission_classes中原来的AllowAny改成IsAuthenticated即可
        permission_classes = [permissions.IsAuthenticated]
        renderer_classes = [
            CoreJSONRenderer,
            renderers.OpenAPIRenderer,
            renderers.SwaggerUIRenderer
        ]

        def get(self, request):
            generator = SchemaGenerator(
                title=title,
                url=url,
                patterns=patterns,
                urlconf=urlconf
            )
            schema = generator.get_schema(request=request)

            if not schema:
                raise exceptions.ValidationError(
                    'The schema generator did not return a schema Document'
                )

            return Response(schema)

    return SwaggerSchemaView.as_view()

2. urls.py里配置路由

from heat_backends.account.views import Index, get_swagger_view


schema_view = get_swagger_view(title='HEAT API')

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 配置路由
    url(r'^docs/', schema_view),
    url(r'^api-auth/', include('rest_framework.urls')),
]

3. setting.py里设置swagger

SWAGGER_SETTINGS = {
    # 基础样式
    'SECURITY_DEFINITIONS': {
        "basic": {
            'type': 'basic'
        }
    },
    # 如果需要登录才能够查看接口文档, 登录的链接使用restframework自带的.
    'LOGIN_URL': 'rest_framework:login',
    'LOGOUT_URL': 'rest_framework:logout',
    # 接口文档中方法列表以首字母升序排列
    # 'APIS_SORTER': 'alpha',
    # 如果支持json提交, 则接口文档中包含json输入框
    'JSON_EDITOR': True,
    # 方法列表字母排序
    'OPERATIONS_SORTER': 'alpha',
    'VALIDATOR_URL': None,
}

差不多这些吧,另外的就是需要注意把rest_framework_swagger配置在INSTALLED_APPS,祝使用愉快!?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值