Django Rest'api-docs'不是注册名称空间

Ivá*_*ova 6 django django-rest-framework

我正在为我的api设置文档,当我要求时(http:// localhost:8000/api/v0/docs /)该应用程序显示此错误:

NoReverseMatch at /api/v0/docs/
'api-docs' is not a registered namespace
Run Code Online (Sandbox Code Playgroud)

当试图这样做

<script src="{% url **'api-docs:schema-js'** %}"></script>
Run Code Online (Sandbox Code Playgroud)

这是我的urls.py文件:

from django.contrib import admin
from django.conf.urls import url, include
from django.contrib.auth.models import User
from . import views

from rest_framework import routers, serializers, viewsets

from rest_framework.documentation import include_docs_urls

# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'goals', views.GoalViewSet)


urlpatterns = [
    url(r'^goals/$', include(router.urls)),
    url(r'^docs/', include_docs_urls(title='My API title')),
]
Run Code Online (Sandbox Code Playgroud)

我将命名空间添加到include_docs_urls但它不起作用.(我已经安装了coreapi,pygments和markdown).

事先感谢帮助我.

wen*_*isa 5

您应该将docs网址格式移动到 urls.py文件中。这在DRF中仍然是一个问题,在GitHub的官方来源上也存在一个问题:https : //github.com/encode/django-rest-framework/issues/4984

Django REST框架的官方开发人员Tom Christie说:

非常重要的是,我希望看到它具有高度优先级,但是此刻还有很多其他事情在进行。即使在发布3.6.3之后,仍将朝着3.7.0的实时集成进行所有工作。

因此您的docs模式不应包含任何前缀(如api/v0/)。

最后,更改您的main urls.py

url(r'^docs/', include_docs_urls(title='API Title'))
Run Code Online (Sandbox Code Playgroud)