AP2*_*257 11 forms django redirect
所以这不能太难,但我无法弄明白......
我希望我的表单在django(位于/ file_upload /)上传文件,将其添加到数据库,然后重定向到新页面,其中参数是我在数据库中添加的字段的id(位于at / file/163 /,比如说).
我已经设置了urls.py,以便/ file/163 /可以正常工作,如果你直接在那里导航,但我不知道如何从/ file/upload /到达那里.
我的代码是这样的:
def add(request):
if request.method == 'POST': # If the form has been submitted...
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
# do stuff & add to database
my_file = FileField.objects.create()
return HttpResponseRedirect(reverse('/file/', args=[my_file.id]))
Run Code Online (Sandbox Code Playgroud)
我无法使用此解决方案,因为在我处理views.py中的表单之前,我不知道字段ID是什么,因此重定向必须发生在views.py中.我认为.
有什么想法吗?
Nic*_*ood 20
你有reverse错误的论据
return HttpResponseRedirect(reverse('/file/', args=[my_file.id]))
Run Code Online (Sandbox Code Playgroud)
reverse 采取视图或名称或视图,而不是网址.
你没有说你的视图函数被调用什么来查看文件,但是让我们说它被调用view,然后上面应该是
return HttpResponseRedirect(reverse('view', args=[my_file.id]))
Run Code Online (Sandbox Code Playgroud)
或者可能
return HttpResponseRedirect(reverse(view, args=[my_file.id]))
Run Code Online (Sandbox Code Playgroud)
具体取决于您在urls.py中所写的内容
您可以命名视图urls.py并使用这些名称而不是函数名称 - 有关更多示例,请参阅文档
如果你想urls.py改变你的方式,使用反向是一个好主意- 你将能够改变任何路径,你的所有观点将继续工作.
Dom*_*ger 10
您对表单的查看应如下所示:
def add(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
# do stuff & add to database
my_file = FileField.objects.create()
# use my_file.pk or whatever attribute of FileField your id is based on
return HttpResponseRedirect('/files/%i/' % my_file.pk)
else:
form = UploadFileForm()
return render_to_response('upload_file.html', {
'form': form,
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27669 次 |
| 最近记录: |