表单提交后,django重定向不起作用

时间:2018-01-01 17:59:51

标签: django forms redirect

django的新手

所以这个可能有一个非常简单的答案,但我不能为我的生活找到具体的解决方案。我只是在使用FileField提交表单后尝试重定向到新的URL。

我可以单独导航到这个URL,它可以正常工作。

文件正确上传,所以我知道它已经过正确验证。

但重定向会返回以下错误:

Reverse for 'success' not found. 'success' is not a valid view function or pattern name.

我尝试了一系列不同的命名约定,但没有一个有效。在我看来,我已经设置了URL并正确传递了它。

真的很感激一些帮助。最简单的问题是最令人沮丧的!

以下是观点。

from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from .forms import InvestmentReportForm

def upload(request):
    if request.method == 'POST':
        form = InvestmentReportForm(request.POST, request.FILES)

        if form.is_valid():
            form.save()

            return redirect('success')
    else:
        form = InvestmentReportForm()
    return render(request, 'app/upload.html', {'form': form})

def success(request):
    return HttpResponse("File successfully uploaded")

我的urls.py:

app_name = 'app'
urlpatterns = [
                path('', views.index, name='index'),
                path('upload/', views.upload, name='upload'),
                path('success/', views.success, name='success'),
                path('performance/', views.performance, name='performance'),
                ]

2 个答案:

答案 0 :(得分:1)

我怀疑答案很简单。对于其他人,如果对一组url模式使用命名空间,则在调用这些URL时必须引用该命名空间。对于这个例子:

return redirect('app:success')

答案 1 :(得分:0)

def upload(request):
    if request.method == 'POST':
        form = InvestmentReportForm(request.POST, request.FILES)

        if form.is_valid():
            form.save()

            return HttpResponseRedirect('success/')
    else:
        form = InvestmentReportForm()
    return render(request, 'app/upload.html', {'form': form})