即使名称设置正确,也找不到反向 Django

Posted

技术标签:

【中文标题】即使名称设置正确,也找不到反向 Django【英文标题】:Reverse not found even if the name was set correctly Django 【发布时间】:2021-08-29 14:03:28 【问题描述】:

我对下面这样的产品有一个看法:

@api_view(['POST'])
@permission_classes([IsAuthenticated])
def LikeView(request, pk):
    product = get_object_or_404(Product, id=pk)
    product.bumps.add(request.user)
    return HttpResponseRedirect(reverse('detailcreate', args=[pk]))

但是当我发送这样的帖子请求时:

http://127.0.0.1:8000/api/like/04a544c1-78a2-4dc7-9b1c-897feb527541

我收到一个错误:Reverse for 'detailcreate' not found. 'detailcreate' is not a valid view function or pattern name.

我的 urls.py 看起来像这样:

from django.urls import path
from .views import LikeView, ProductList, ProductDetail

app_name = 'name'

urlpatterns = [
    path('<uuid:pk>', ProductDetail.as_view(), name='detailcreate'),
    path('', ProductList.as_view(), name='listcreate'),
    path('like/<uuid:pk>', LikeView, name='like_product'),
]

所以我不知道怎么回事,名字是正确设置的。

pk 是uuid

【问题讨论】:

【参考方案1】:

如果你使用app_name,你应该在解析url时指定它:

return HttpResponseRedirect(reverse('name:detailcreate', args=[pk]))

【讨论】:

以上是关于即使名称设置正确,也找不到反向 Django的主要内容,如果未能解决你的问题,请参考以下文章

即使通过 Maven 添加也找不到 JDBC 驱动程序

打字稿错误 TS2304:即使使用 esnext 也找不到名称 AsyncIterator

FLTK - 即使我包含正确的目录也找不到标题[重复]

在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到

即使已安装 Composer 也找不到 ext-mbstring

即使它在 pyodbc.dataSources() 中列出,也找不到驱动程序