Django重定向无法解析URL

时间:2018-08-03 20:52:18

标签: python django

我有一个非常简单的带有表单的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),
]

1 个答案:

答案 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的评论可能是正确的。