基于Django-Class的模板HttpResponseRedirect不会重定向到欲望页面

时间:2017-03-21 04:23:18

标签: python django redirect

我有以下代码将重定向到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并呈现结果页吗?

1 个答案:

答案 0 :(得分:1)

我已经找到了答案。问题是帖子请求不是来自django形式。它来自Dropzone.js使用Ajax在上传后发送帖子请求。这就是为什么我在处理post方法后无法重定向到另一个url。通过从onsuccess更改Dropzone事件或创建Django表单,我可以使用我的问题中的代码成功重定向到结果页面。感谢我的一位朋友