gpt4 book ai didi

python - django-python : failed using reverse : no reverse match

转载 作者:行者123 更新时间:2023-11-30 22:51:44 27 4
gpt4 key购买 nike

我有以下观点:

def default_new (request):
if request.method == "POST":
post = EquipmentForm(request.POST)
if form.is_valid():
post.save()
return HttpResponseRedirect(reverse('calbase:default_detail', args=(id,)))
else:
form = EquipmentForm()
return render(request, 'calbase/default_edit.html', {'form':form})

class default_detail (generic.DetailView):
model = Equipment
template_name = 'calbase/default_detail.html'

和网址:

urlpatterns = [
url(r'^$', views.default, name = 'default'),
url(r'^default/((?P<id>\d+)/$)', views.default_detail.as_view(), name = 'default_detail'),
url(r'^default/new/$', views.default_new, name = 'default_new'),
]

我在这里想做的只是接受表单输入,保存它,然后重定向到其详细 View 。然而,尽管表单已正确保存,但它总是给我错误,例如:

NoReverseMatch at /calbase/default/new/
Reverse for 'default_detail' with arguments '(<built-in function id>,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['calbase/default/((?P<id>\\d+)/$)']

有人可以帮我弄清楚这里出了什么问题吗?

最佳答案

问题是您正在使用 id ,这是一个内置函数。

当您调用form.save()时,它将返回Post实例。使用 post.id (或 post.pk 如果您愿意)来获取帖子的 ID。

def default_new(request):
if request.method == "POST":
form = EquipmentForm(request.POST)
if form.is_valid():
post = form.save()
return HttpResponseRedirect(reverse('calbase:default_detail', args=(post.id,)))

您的网址模式中的括号也太多。应该是:

url(r'^default/(?P<id>\d+)/$', views.default_detail.as_view(), name = 'default_detail'),

关于python - django-python : failed using reverse : no reverse match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com