Python Django2.0;仍然无法了解重定向的工作原理
我是Django的新手,我仍然不知道重定向是如何工作的 现在,我用这种方式重定向Python Django2.0;仍然无法了解重定向的工作原理,python,django,Python,Django,我是Django的新手,我仍然不知道重定向是如何工作的 现在,我用这种方式重定向 return HttpResponseRedirect(reverse_lazy('main:index')) 这种方法有效 现在我正在创建另一个页面,我想做的是在提交表单数据后重定向到同一个页面 view.py是这样的 def add_comment(request, pk): entry = Entry.objects.get(id=pk) if request.method != 'PO
return HttpResponseRedirect(reverse_lazy('main:index'))
这种方法有效
现在我正在创建另一个页面,我想做的是在提交表单数据后重定向到同一个页面
view.py是这样的
def add_comment(request, pk):
entry = Entry.objects.get(id=pk)
if request.method != 'POST':
form = CommentForm()
else:
form = CommentForm(request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.user = request.user
new_comment.save()
return redirect('add_comment', pk=entry.id)
return render(request, 'main/add_comment.html', {'form': form, 'entry': entry, 'comments': comments})
path('add_comment/<int:pk>', views.add_comment, name='add_comment'),
url.py是这样的
def add_comment(request, pk):
entry = Entry.objects.get(id=pk)
if request.method != 'POST':
form = CommentForm()
else:
form = CommentForm(request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.user = request.user
new_comment.save()
return redirect('add_comment', pk=entry.id)
return render(request, 'main/add_comment.html', {'form': form, 'entry': entry, 'comments': comments})
path('add_comment/<int:pk>', views.add_comment, name='add_comment'),
path('add_comment/',views.add_comment,name='add_comment'),
我可以进入此页面,但在提交表单后,会发生此错误
NoReverseMatch at/add_comment/5
未找到“添加注释”的相反项“添加注释”不是有效的视图函数或模式名称
请求URL:
即使我可以进入这个url页面,我也不能重定向到同一个页面
我怎么会错呢?另外,推荐的重定向到页面的方法是什么?您可能需要更改以下内容:
return redirect('add_comment', pk=entry.id)
为此:
return redirect('main:add_comment', pk=entry.id))
假设所有URL都位于同一命名空间中。如果您的
索引
url与您的添加注释
url在同一列表中定义,则他们将共享主
命名空间。旁注您确定模型填写正确吗?向模型添加更多信息后,需要调用new\u comment.save()
。如果您没有正确填写模型,那么此时可能无法导航到该模型。当您导航到一个您确信有效的页面时,重定向是否有效,即/
或/google.com
?噢,对不起,我在这里发布代码时删除了这一行。