python - Django 重定向无法解析 URL

标签 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'),
...]

该 View 与重定向 View 位于同一views.py中:

def overview(request):
    ...
    return render(request, 'feedback/overview.html', context)

带有重定向调用的 View 如下所示:

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})

表单数据保存在数据库中,但重定向失败。我做错了什么?

编辑:

这是主要的 urls.py。这与我在这里使用 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),
]

最佳答案

您的异常来自 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 甚至无法找到您的 url 来尝试反向访问它。因此,您可能错误地将其包含在核心应用程序的 urls.py 中,以尝试引用它。也许fxgx的评论是正确的。

关于python - Django 重定向无法解析 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51679962/

相关文章:

python - appJar - ListBox/OptionBox 小部件在选择时调用函数

python - Django: `MergeDict` 已弃用,请改用 `dict.update()`

python - 如何访问使用 django 的社交身份验证生成的 token ?

django - 使用 Buildout/djangorecipe 布局 Django 应用程序的常用方法是什么?

python - 如何更改Python 2.7安装包文件夹

python - Pytorch CUDA 错误 : no kernel image is available for execution on the device on RTX 3090 with cuda 11. 1

python - Inception-v3 的 Keras 实现没有 BN-Auxillary

python - 通过 "for"循环(即 "for x in list:")访问列表时,有没有办法在同一循环中访问列表中的 "x+1"项?

python - django 迁移 "No migrations to apply."

javascript - jquery .val() 设置与提供的值不同的值