Django Ninja API文档中授权按钮不显示的问题求助
Django Ninja API文档授权按钮不显示的解决办法
你用错配置逻辑了——Django Ninja和Django REST Framework的rest_auth不属于同一套体系,之前添加的REST_AUTH_DEFAULT_AUTHENTICATION_CLASS对Ninja的API文档完全无效,按以下步骤修正:
- 移除无用配置:把INSTALLED_APPS里的
rest_auth,以及settings中的REST_AUTH_DEFAULT_AUTHENTICATION_CLASS配置项删除,这些是DRF专属配置,和Ninja无关。 - 配置Django Ninja专属认证:在你的API定义文件(比如
api.py)中,直接给Ninja的API实例指定认证方式:from ninja import NinjaAPI from ninja.security import HttpBearer class TokenAuth(HttpBearer): def authenticate(self, request, token): # 编写你的token验证逻辑,比如从数据库匹配用户 from django.contrib.auth.models import User try: user = User.objects.get(auth_token=token) return user except User.DoesNotExist: return None # 给API实例绑定认证类 api = NinjaAPI(auth=TokenAuth()) - 验证生效:重启Django服务,访问默认的API文档地址(
/docs),此时右上角应该会出现"Authorize"按钮,点击后输入token即可完成认证配置。
如果仍不显示,排查以下点:
- 是否在API实例中正确传入了
auth参数 - 认证类是否继承自
ninja.security下的基类(如HttpBearer、HttpBasic等) - 是否重启了Django服务使配置生效
内容的提问来源于stack exchange,提问作者OMER RAAD
相关产品推荐
相关产品推荐

