即使名称设置正确 Django 也找不到反向
Reverse not found even if the name was set correctly Django
我对下面这样的产品有看法:
@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]))
但是当我发送这样的 post 请求时:
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
如果你使用app_name
,你应该在解析url时指定它:
return HttpResponseRedirect(reverse('name:detailcreate', args=[pk]))
我对下面这样的产品有看法:
@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]))
但是当我发送这样的 post 请求时:
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
如果你使用app_name
,你应该在解析url时指定它:
return HttpResponseRedirect(reverse('name:detailcreate', args=[pk]))