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'),
]
答案 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})