Django Rest Framework:未找到文档

时间:2018-04-09 12:14:13

标签: django django-rest-framework

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。我想我现在需要重构整个事情......

0 个答案:

没有答案