Rah*_*hul 6 django swagger-2.0 django-rest-swagger
默认情况下,django-rest-swagger显示不需要身份验证的视图(在这种情况下为JWT Auth)。我试图get_swagger_view通过添加IsAuthenticated权限类以包括也需要身份验证的视图来覆盖默认快捷方式。但是这次我访问渲染的文档后,No operations defined in spec!
如何同时显示需要身份验证和不需要身份验证的视图。
您可以使用patchfromunittest模块来解决问题。
在模式生成期间,将根据权限列表检查每个视图的请求对象。我们在permission_classes属性中声明它们,它们通常具有在生成期间调用的has_permission方法。如果它引发一些exceptions.APIException异常,生成器会跳过该视图Http404。PermissionDenied
如果你想修补类的方法,IsAuthenticated你可以这样做:
from unittest.mock import patch
from rest_framework_swagger.views import get_swagger_view
def patch_the_method(func):
def inner(*args, **kwargs):
with patch('rest_framework.permissions.IsAuthenticated.has_permission', return_value=True):
response = func(*args, **kwargs)
return response
return inner
schema_view = patch_the_method(get_swagger_view(title='Some API'))
Run Code Online (Sandbox Code Playgroud)
请注意,这不会将具有其他权限的视图包含到架构中。为了避免修补所有权限类,您可以修补名为has_view_permissionsSchemaGenerator的类中的方法。
具体方法如下:
...
with patch('rest_framework.schemas.SchemaGenerator.has_view_permissions', return_value=True):
...
Run Code Online (Sandbox Code Playgroud)