未找到“用户创建”的 DRF 反向

Posted

技术标签:

【中文标题】未找到“用户创建”的 DRF 反向【英文标题】:DRF reverse for 'user-create' not found 【发布时间】:2020-07-28 10:04:00 【问题描述】:

在 app/urls.py 中有一个名为 MyUserCreate 的视图

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'api/users^$', views.MyUserCreate.as_view(), name='user-create'),
]

这是我的根 urls.py

from django.contrib import admin
from django.urls import include, path, re_path
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
   openapi.Info(
      title="Snippets API",
      default_version='v1',
      description="Test description",
      terms_of_service="https://www.google.com/policies/terms/",
      contact=openapi.Contact(email="contact@snippets.local"),
      license=openapi.License(name="BSD License"),
   ),
   public=True,
   permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
    re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),

    path('test/', include('test_app.urls')),
    path('admin/', admin.site.urls),
    #path('user/', include('user.urls'))
]

在 app/tests.py 中

self.create_url = reverse('user-create')

跑步

python manage.py test

给出这个错误

Traceback(最近一次调用最后一次):文件 "C:\Users\tiago\Desktop\letsgo\COVID19-be\django_server\user\tests.py", 第 13 行,在设置中 self.create_url = reverse('user-create') 文件 "C:\Users\tiago\Desktop\letsgo\venv\lib\site-packages\django\urls\base.py", 第 87 行,反向 return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) 文件 "C:\Users\tiago\Desktop\letsgo\venv\lib\site-packages\django\urls\resolvers.py", 第 677 行,在 _reverse_with_prefix raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch:找不到“用户创建”的反向。 “用户创建”不是有效的视图 函数或模式名称。

我能做些什么来解决它?

【问题讨论】:

你能显示你的根 urls.py 吗? 当然,已经有@ArakkalAbu 好像你已经注释掉了#path('user/', include('user.urls'))这行 【参考方案1】:

您没有在 根 URL 配置中包含应用 URL

urlpatterns = [
    # other URLs

    path('user/', include('user.urls'))
]

【讨论】:

以上是关于未找到“用户创建”的 DRF 反向的主要内容,如果未能解决你的问题,请参考以下文章

未找到“用户配置文件”的反向。 'userprofile' 不是有效的视图函数或模式名称

Django - DRF 删除/检索/补丁返回 404 详细信息:“未找到”

drf-JWT认证

未找到带有参数 '('',)' 的 'todo-user' 的反向操作。已尝试 1 种模式

Django - 使用 drf-nested-routers 反向嵌套 url

用户创建的类对象实例化的未声明标识符