我有以下代码将重定向到localhost:3000/ocr/result
页面,但它没有呈现结果页面
class UploadView(generic.TemplateView):
template_name = 'ocr/upload.pug'
def get(self, request, args, *kwargs):
print 'Handling get request'
response = TemplateResponse(request, self.template_name)
return response
#@ensure_csrf_cookie
def post(self, request, args, *kwargs):
print('Handling post request')
#return HttpResponseRedirect('/ocr/result')
return HttpResponseRedirect(reverse('result'))
class ResultView(generic.TemplateView):
template_name = 'ocr/result.pug'
urls.py
看起来像:
# ex: /ocr/upload/
url(r'^upload/$', views.UploadView.as_view(), name='upload'),
# ex: /ocr/result/
url(r'^result/$', views.ResultView.as_view(), name='result'),
当我使用return HttpResponseRedirect('/ocr/result')
时,在处理发布请求后,它没有呈现结果页面localhost:3000/ocr/result
,但仍然呈现上传页面localhost:3000/ocr/upload
。我不明白为什么?
当我使用return HttpResponseRedirect(reverse('result'))
时。它仍然有error: NoReverseMatch: Reverse for 'result' with arguments '()' and keyword arguments '{}' not found
。
有人可以帮我了解如何重定向到/ocr/result
并呈现结果页吗?
答案 0 :(得分:1)
我已经找到了答案。问题是帖子请求不是来自django
形式。它来自Dropzone.js
使用Ajax
在上传后发送帖子请求。这就是为什么我在处理post方法后无法重定向到另一个url。通过从onsuccess
更改Dropzone
事件或创建Django表单,我可以使用我的问题中的代码成功重定向到结果页面。感谢我的一位朋友