默认情况下,django-rest-swagger显示不需要身份验证的我的视图(在本例中为JWT Auth )。我试图通过在权限类中添加IsAuthenticated来覆盖默认的get_swagger_view快捷方式,以包含也需要身份验证的视图。但这一次只要访问呈现的文档,我就会得到No operations defined in spec!
如何同时显示需要和不需要身份验证的视图。
发布于 2019-12-19 18:05:27
您可以在unittest模块中使用patch来解决此问题。
在架构生成期间,将根据权限列表检查每个视图的请求对象。我们在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'))请注意,这不会将具有其他权限的视图包含到模式中。为了避免修补所有权限类,可以从名为has_view_permissions的SchemaGenerator类中修补一个方法。
下面是如何实现的:
...
with patch('rest_framework.schemas.SchemaGenerator.has_view_permissions', return_value=True):
...https://stackoverflow.com/questions/51972516
复制相似问题