Django 2.0.1
DRF 3.7.7
我正在使用DRF提供的自动生成的文档。我的urls.py
:
from rest_framework.documentation import include_docs_urls
urlpatterns = [
...
path('docs/', include_docs_urls(title='My API')),
...
]
这曾经在过去工作得很好,但最近它停止了工作(我不知道为什么)。当我尝试访问http://localhost:8000/docs/
处的文档时,它会向我提供DRF 404错误:
错误
{'detail':'找不到。'}
附加信息注意:您是 看到这条消息,因为DEBUG == True。
看到此页面通常是配置错误:是您的 DEFAULT_AUTHENTICATION_CLASSES或DEFAULT_PERMISSION_CLASSES正在 意外应用?
您的回复状态代码是:404
401未经授权。
您是否启用了SessionAuthentication?
你是吗? 登录?403 Forbidden。
您是否有足够的权限进行访问 这个观点?
你的架构是非空的吗? (一个空架构将导致一个 权限被拒绝提出错误。)
最常见的意图 解决方案是在包含时禁用身份验证和权限 文档网址:
url(r'^ docs /',include_docs_urls(title ='Your API', authentication_classes = [], permission_classes = [])),
覆盖此模板如果您希望访问您的文档 经过身份验证,您可以覆盖此模板 rest_framework /文档/的error.html。
可用的上下文是:上面的错误数据,请求,响应的数据 和调试标志。
这很奇怪。我不知道为什么我收到404错误而且没有其他信息...任何建议都会非常有帮助。感谢。
更新
我已经本地化了这种行为的来源。在我的一个API视图中有:
def get_serializer_context(self):
context = super().get_serializer_context()
context['request'] = self.request
>>> context['form_id'] = self.kwargs.get('form_id') <<<
return context
序列化程序使用get_object_or_404
来获取正确的表单,但在DRF自动生成的文档中,form_id
中没有kwargs
。我想我现在需要重构整个事情......