我有一个非常简单的带有表单的Django应用。表单通过验证后,应该重定向到应用程序的起始页面。我收到以下错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'overview' not found.
'overview' is not a valid view function or pattern name.
urls.py中的相关路径为:
urlpatterns = [
path('overview', views.overview, name='overview'),
...]
该视图与重定向视图位于相同的views.py中:
def overview(request):
...
return render(request, 'feedback/overview.html', context)
带有重定向调用的视图如下:
def make_submission(request):
if request.method == 'POST':
form = FeedbackForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.approved = False
post.save()
return redirect('overview')
else:
form = FeedbackForm()
return render(request, 'feedback/make_submission.html', {'form': form})
表单数据保存在db中,但是重定向失败。我在做什么错了?
编辑:
这是主要的urls.py。它与我在此处使用usinf url()而不是path()有什么关系吗?我目前正在将整个shebang迁移到Django 2.1。
from django.conf.urls import include,url
from django.contrib import admin
urlpatterns = [
url(r'^$', include('main.urls')),
url(r'^main/', include('main.urls')),
url(r'^feedback/', include('feedback.urls')),
url(r'^admin/', admin.site.urls),
]
答案 0 :(得分:1)
您的异常来自here:
if patterns:
if args:
arg_msg = "arguments '%s'" % (args,)
elif kwargs:
arg_msg = "keyword arguments '%s'" % (kwargs,)
else:
arg_msg = "no arguments"
msg = (
"Reverse for '%s' with %s not found. %d pattern(s) tried: %s" %
(lookup_view_s, arg_msg, len(patterns), patterns)
)
else:
msg = (
"Reverse for '%(view)s' not found. '%(view)s' is not "
"a valid view function or pattern name." % {'view': lookup_view_s}
)
这意味着Django甚至找不到您的网址来尝试将其反向。因此,您可能无法正确地将其包含在核心应用程序的urls.py
中,以尝试引用它。 fxgx的评论可能是正确的。