表单提交后django重定向不起作用
django新手 所以这一个可能有一个非常简单的答案,但我一生都找不到解决这个问题的具体方法。我只是尝试在提交了一个带有文件字段的表单之后重定向到一个新的URL 我可以单独导航到URL,它工作正常 文件上载正确,因此我知道它已正确验证 但重定向返回以下错误:表单提交后django重定向不起作用,django,forms,redirect,Django,Forms,Redirect,django新手 所以这一个可能有一个非常简单的答案,但我一生都找不到解决这个问题的具体方法。我只是尝试在提交了一个带有文件字段的表单之后重定向到一个新的URL 我可以单独导航到URL,它工作正常 文件上载正确,因此我知道它已正确验证 但重定向返回以下错误: Reverse for 'success' not found. 'success' is not a valid view function or pattern name. 我尝试了一系列不同的命名约定,但没有一个有效。在我看来,我已
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")
和my url.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'),
]
答案正如我所怀疑的那样简单。对于其他人,如果您为一组url模式使用名称空间,则在调用这些url时必须引用该名称空间。对于此示例:
返回重定向('app:success')
好的,那么如果在返回重定向('success')之前添加success\u url=reverse('success'),您会看到什么?您需要断言False才能看到success的值。这些url模式是否有名称空间?您的意思是我是否在我的url.py中提供了一个应用程序名称?如果是,是的。我会更新code.alrite,所以我尝试了这个返回重定向('app:success')
,它成功了。因此,如果要为一组URL模式命名名称空间,则在尝试调用URL时必须引用该名称空间。如果你想回答,我会接受的。谢谢,但我试过了。我收到一个404错误,此消息:当前路径inveskore/upload/success/,与这些路径中的任何一个都不匹配。
出于某种原因,它将URL标题链接在一起。我是否必须设置一个URL路径作为表单页面的子路径???使用URL成功/我不确定你的意思。。。如何使用它?我已经按照您所示完成了,并获得了404。然后使用/inveskore/success/
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})