在Django Rest Framework中,您可以简单地生成文档:
https://www.django-rest-framework.org/topics/documenting-your-api/#documenting-your-api
from rest_framework.documentation import include_docs_urls
urlpatterns = [
...
url(r'^docs/', include_docs_urls(title='My API title'))
]
自动生成的文档具有从序列化程序很好地生成的请求正文,从docs生成的很好的文档,但是如何添加身份验证和权限类信息?
我的某些基于类的视图具有自定义的authentication_classes
和permission_classes
,以及如何显示有关它们的信息?
答案 0 :(得分:0)
查看include_docs_urls
会看到以下内容:
def include_docs_urls(
title=None, description=None, schema_url=None, public=True,
patterns=None, generator_class=SchemaGenerator,
authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES,
permission_classes=api_settings.DEFAULT_PERMISSION_CLASSES,
renderer_classes=None):
....
因此,解决方案是:
在settings.py中设置authentication_classes
和permission_classes
# settings.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication', # <---- 1
),
'DEFAULT_PERMISSION_CLASSES': (
'common.permissions.IsDeveloper', # <---- 2 don't forget the ','
)
}
注意:
1.需要SessionAuthentication,因为 DRF自我描述API 使用会话来保持用户登录
2.common.permissions.IsDeveloper
是一个自定义权限类,您可以定义自己的身份并将引用位置放在此处作为字符串,也可以使用默认权限。
# common/permissions.py
class IsDeveloper(permissions.BasePermission):
def has_permission(self, request, view):
user_groups = request.user.groups.values_list('name', flat=True)
return bool('Developer' in user_groups)
然后,如果您没有登录或不在“开发人员”组中的登录用户,则会出现: