Python u';rest#U框架';不是已注册的命名空间

Python u';rest#U框架';不是已注册的命名空间,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在尝试使用Django Rest框架进行身份验证,但无法通过DRF面板登录。当我试图通过指定 /api/api身份验证/登录/ url.py api/URL.py: 我该怎么办 尝试将url(r'^api auth/',include('rest\u framework.url',namespace='rest\u framework'))行添加到主url.py中,或者将api//code>的名称空间更改为rest\u framework(并将其从其他url中删除)问题在于您的名称空间。具体

我正在尝试使用Django Rest框架进行身份验证,但无法通过DRF面板登录。当我试图通过指定

/api/api身份验证/登录/

url.py

api/URL.py:


我该怎么办

尝试将
url(r'^api auth/',include('rest\u framework.url',namespace='rest\u framework'))
行添加到主
url.py
中,或者将
api//code>的
名称空间更改为
rest\u framework
(并将其从其他url中删除)

问题在于您的名称空间。具体来说,您使用的是一个嵌套的命名空间,Django REST框架并不希望出现这种情况

的教程为您的API URL推荐以下代码片段

# The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
因此,您的登录url将位于
/api auth/
,并且名称空间为
rest\u framework
,因此不会干扰现有的url模式。本教程假设您在放入模式时处于根urlconf中,或者至少您没有使用额外的名称空间。这是因为url
rest\u framework:login
用于生成可浏览API的登录页面,因此名称空间必须是
rest\u framework

在您的例子中,您正在
api
下注册url,因此视图名称实际上是
api:rest\u framework:login
。您正在得到的错误

u'rest_framework'不是已注册的命名空间


是因为
rest\u框架
命名空间不是根命名空间。您可以通过将URL模式移动到
api/URL.py
之外来解决此问题,或者。

如果您没有使用api中的名称空间,只需从路由中删除名称空间即可

url(r'^api/', include('api.urls', namespace='api'))

我也有同样的问题,对我来说也可以,因为我不使用来自api nowhere的名称空间

url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),

在我的例子中,我用这句话:
path('api-auth/',include('rest\u framework.url'),
在我的应用程序级别
urls.py
中,您应该将其放入项目级别
urls.py


希望能有所帮助:)

您的
url.py中可能有问题。。。你能展示一下
urlpatterns
是如何构造的吗?添加了有问题的url.py和api/url.py@BernhardVallantI无法将URL.py移到api之外,因为我需要在应用程序级别上进行身份验证,而在应用程序级别上,我找不到登录的方法。如何注册“rest\u framework”命名空间?或者您可以提供有关重写可浏览API模板的详细信息吗?虽然可以,但我希望在API级别进行身份验证。名称空间rest\u framework已在/API/URL.py上指定
# The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browsable API.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
url(r'^api/', include('api.urls', namespace='api'))
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),