Django-2.2 NoReverseMatch 错误。无法重定向到下一页
Django-2.2 NoReverseMatch error. Cannot redirect to next page
在我的网络应用程序中提交创建表单后,它应该重定向到一个页面,其中显示输入的新产品。相反,它显示:
Reverse for 'category' with keyword arguments '{'pk': UUID('e3ec4273-22c9-450f-87c9-d12973dce3c1')}' not found. 1 pattern(s) tried: ['app/products/category/<int:pk>']
views.py
def create_category(request):
if request.method=='POST':
form = CategoryForm(request.POST,request.FILES)
if form.is_valid():
data = form.save(commit=False)
data.creator = request.user
data.updater = request.user
data.auto_id = get_auto_id(ProductCategory)
data.save()
return HttpResponseRedirect(reverse('products:category',kwargs={"pk":data.pk}))
else:
...
else:
...
def category(request,pk):
instance = get_object_or_404(ProductCategory.objects.filter(pk=pk))
context = {
'title': "Category : " + instance.name,
'instance' : instance,
}
return render(request,'products/category.html',context)
urls.py
from django.urls import path
from . import views
app_name = 'products'
urlpatterns = [
path('categories',views.categories,name='categories'),
path('category/create',views.create_category,name='create_category'),
path('category/<int:pk>',views.category,name='category'),
path('category/edit/<int:pk>',views.edit_category,name='edit_category'),
path('category/delete/<int:pk>',views.delete_category,name='delete_category'),
]
事情是提交表单并将值添加到数据库中。但它不会进入下一步。
我是 django 2 的新手,所以不太确定如何在 urls/path
中传递 pk
在你的url中:
path('category/<int:pk>',views.category,name='category'),
^^^^
您期望 整数 但在代码中您传递的是 UUID。所以将 url 更改为:
path('category/<uuid:pk>',views.category,name='category'),
可以在 documentation
中找到更多信息。
在我的网络应用程序中提交创建表单后,它应该重定向到一个页面,其中显示输入的新产品。相反,它显示:
Reverse for 'category' with keyword arguments '{'pk': UUID('e3ec4273-22c9-450f-87c9-d12973dce3c1')}' not found. 1 pattern(s) tried: ['app/products/category/<int:pk>']
views.py
def create_category(request):
if request.method=='POST':
form = CategoryForm(request.POST,request.FILES)
if form.is_valid():
data = form.save(commit=False)
data.creator = request.user
data.updater = request.user
data.auto_id = get_auto_id(ProductCategory)
data.save()
return HttpResponseRedirect(reverse('products:category',kwargs={"pk":data.pk}))
else:
...
else:
...
def category(request,pk):
instance = get_object_or_404(ProductCategory.objects.filter(pk=pk))
context = {
'title': "Category : " + instance.name,
'instance' : instance,
}
return render(request,'products/category.html',context)
urls.py
from django.urls import path
from . import views
app_name = 'products'
urlpatterns = [
path('categories',views.categories,name='categories'),
path('category/create',views.create_category,name='create_category'),
path('category/<int:pk>',views.category,name='category'),
path('category/edit/<int:pk>',views.edit_category,name='edit_category'),
path('category/delete/<int:pk>',views.delete_category,name='delete_category'),
]
事情是提交表单并将值添加到数据库中。但它不会进入下一步。
我是 django 2 的新手,所以不太确定如何在 urls/path
中传递 pk在你的url中:
path('category/<int:pk>',views.category,name='category'),
^^^^
您期望 整数 但在代码中您传递的是 UUID。所以将 url 更改为:
path('category/<uuid:pk>',views.category,name='category'),
可以在 documentation
中找到更多信息。