【发布时间】:2018-06-30 01:09:10
【问题描述】:
我是 Django 新手,但我仍然不明白重定向的工作原理。
目前,我使用这种方式进行重定向。
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})
urls.py 是这样的
path('add_comment/<int:pk>', views.add_comment, name='add_comment'),
我可以进入这个页面,但是我提交表单后出现这个错误。
/add_comment/5 处的 NoReverseMatch
找不到“add_comment”的反向。 'add_comment' 不是有效的视图函数或模式名称。
即使我可以进入这个 url 页面,我也无法重定向到同一页面。
我怎么错了?还有推荐的重定向到页面的方法是什么?
【问题讨论】:
-
旁注您确定模型填写正确吗?向模型添加更多信息后,您需要致电
new_comment.save()。如果您没有正确填写模型,则可能无法在该点导航到它。当您导航到您确定有效的页面时,重定向是否有效,即/或/google.com? -
哎呀,对不起,我在这里发布代码时删除了该行。